article thumbnail image
Published 2022. 6. 1. 21:52

가뭄에 단비 같은 휴일..

바로 탱자탱자 놀아버리기



2941 - 크로아티아 알파벳

(https://www.acmicpc.net/problem/2941)

문제

예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다.

따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.


예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다.

단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.

 

dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다.

lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.

입력

첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다.

단어는 크로아티아 알파벳으로 이루어져 있다. 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다.

 

출력

입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.


-틀린 코드-

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
string = input()
count = 0
 
lst_croa = ['c=','d-','lj','nj','s=','z=']  #'dz='는 따로 하므로 제외
print('dz=' in string)
 
#dz=과 z=가 겹칠 수 있으므로, 'dz='를 먼저 찾아서 제거하면서 카운트한다.
if 'dz=' in string:
    count = string.count('dz=')
    string = string.replace('dz=''')
    print(string)
 
for x in lst_croa:
    if x in string:
        count += string.count(x)
        string = string.replace(x, '')
        print(string)
 
print(count + len(string))
        
        
cs

친절하게도 예제에 내가 놓칠 수 있는 부분을 넣어놨다..

이렇게 짜면 'nljj'가 두개가 뜬다.(lj제거 -> nj붙어있는 상태로 변해서 똑같이 제거해서 두개로 셈)

그러면 갯수대로 지우면 되잖아..?

 

라고 생각하고 string.replace(x, '', string.count(x))로 수정해서 예제를 다 넣어보고

제출을 했는데..

맞왜틀!!

-수정한 코드-

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
string = input()
count = 0
 
lst_croa = ['c=','d-','lj','nj','s=','z=']  #'dz='는 따로 하므로 제외
 
#dz=과 z=가 겹칠 수 있으므로, 'dz='를 먼저 찾아서 !로 바꾼다.
if 'dz=' in string:
    string = string.replace('dz=''!')
 
for x in lst_croa:  #나머지도 동일한 방식으로 적용한다.
    if x in string:
        string = string.replace(x, '!')
        
count = string.count('!')    #! 갯수를 세준다
 
print(count + len(string.replace('!',''))) #!갯수 + !를 제외한 글자 수를 출력한다.
        
        
cs

그리고 질문글을 찾아보면서 반례들을 다 대입해봤지만.. 정답이 나왔지만..

개같이 멸망

-맞힌 코드-

'c-'를 안 써놨다.

ㅋㅋ.. 이전의 나를 믿지 마라..



1316 - 그룹 단어 체커

(https://www.acmicpc.net/problem/1316)

문제

그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다.

단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 단어의 개수 N이 들어온다. N은 100보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 단어가 들어온다. 단어는 알파벳 소문자로만 되어있고 중복되지 않으며, 길이는 최대 100이다.

출력

첫째 줄에 그룹 단어의 개수를 출력한다.


한 30분 고민했는데..

이건 내일해야겠다..

ㅌㅌ


 

 

6번 테마의 9번째까지 총 53개 풀었어.

앞으로 332개의 문제가 남았어. (13.8%)

 

복사했습니다!