728x90
https://www.acmicpc.net/problem/2941
2941번: 크로아티아 알파벳
예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z=
www.acmicpc.net
리트코드의 Roman to Integer 문제와 비슷한 문제이다.
Roman to Integer 문제를 풀 때 처럼 크로아티아 문자 표를 딕셔너리로 만들었다.
cro = {'c=':2,'c-':1,'dz=':3,'d-':2,'lj':2,'nj':2,'s=':2,'z=':2}
각 문자열의 인덱스를 조회하면서 크로아티아 문제가 몇개가 있는지 확인한다.
ans = 0
i = 0
while True:
if word[i:i+3] in cro:
i += 3
ans += 1
elif word[i:i+2] in cro:
i += 2
ans += 1
else:
i += 1
ans += 1
if i == len(word)-1:
ans +=1
break
elif i >= len(word):
break
조회할 인덱스 변수 i와 정답 변수 ans를 선언한다.
크로아티아 문자 'dz='가 있는지 확인하기 위해서 처음 문자열 부터 3자리가 있는지 확인하고 있으면 i값을 3 올린다.
없으면 나머지 2자리수 문자 'c-, d-, lj, nj' 가 있는지 확인하고 있으면 i값을 2올린다.
나머지 's, z'는 그냥 알파벳으로 치기 때문에 따로 in연산자를 쓰지 않고 else문으로 처리해준다.
반복문을 돌리다가 값이 마지막 인덱스면 ans값을 1 올리고 그이상이면 그냥 break를 한다.
cro = {'c=':2,'c-':1,'dz=':3,'d-':2,'lj':2,'nj':2,'s=':2,'z=':2}
word = input()
ans = 0
i = 0
while True:
if word[i:i+3] in cro:
i += 3
ans += 1
elif word[i:i+2] in cro:
i += 2
ans += 1
else:
i += 1
ans += 1
if i == len(word)-1:
ans +=1
break
elif i >= len(word):
break
print(ans)
최종 답은 위와 같다.
유형이 똑같은 문제를 풀으니까 쉽게 풀 수 있었다.
'백준' 카테고리의 다른 글
[JAVA] 9093 단어 뒤집기 (문자열 다루기) (0) | 2021.11.09 |
---|---|
☕️ [JAVA] 백준 2581_소수 (0) | 2021.10.05 |