반응형
문제 출처: www.acmicpc.net/problem/14405
1 . 문제 접근 방식
- 문제에서 주어진 pi, ka, chu의 문자가 나올경우 그 문자를 제외하고 남은 문자열의 개수를 확인하면 될 것 이라고 생각하였다.
2 . 내가 푼 코드
S = input()
# 조건을 만족하는 경우 계속 반복문을 돌기 위해 while문 사용
while True:
# pi라는 문자가 있는 경우 pi라는 문자를 공백으로 대체
# find함수를 이용하여 문자를 찾게되면 존재하는 경우 최소 인덱스 값인 0 이상을 반환할 것이다.
# 문자가 존재하지 않는 경우 -1을 반환하기 때문에 이러한 성질을 이용하여 0보다 크거나 같다는 조건을 주었다.
if S.find('pi') >= 0:
S = S.replace('pi', ' ')
continue
elif S.find('ka') >= 0:
S = S.replace('ka', ' ')
continue
elif S.find('chu') >= 0:
S = S.replace('chu', ' ')
continue
# 위의 조건에서 문자를 제외하고 공백을 주었다
# 그렇기 때문에 공백을 제거하고 붙이기 위해 strip함수를 사용
# 결과적으로 문자열의 길이가 0이면 발음가능 아닐경우 발음 불가능
if len(S.strip()) == 0:
print('YES')
break
else:
print('NO')
break
3 . 결과 및 느낀점
- 성공! 여기서 공백을 주지 말고 그냥 ''로 replace 했으면 strip함수를 안써도 되지 않을까라는 생각을 할 수도 있다. 하지만 처음에 생각을 못했던 부분이 'kpia'라는 문자열이 주어지면 위의 조건식대로 진행하며 처음에 pi라는 문자가 제거되며 k와 a가 붙게 되어 결과적으로 YES가 출력된다. 이 부분을 고려한다면 공백으로 대체한뒤 나중에 공백을 제거하고 결과값을 반환하는게 맞다는 판단을 하게 되어 다음과 같이 코드를 짰다.
반응형
'개인 공부 > Algorithm' 카테고리의 다른 글
[Baekjoon/백준] 11399번 Python (0) | 2021.04.06 |
---|---|
[Baekjoon/백준] 1449번 Python (0) | 2021.04.06 |
[Baekjoon/백준] 1094번 Python (0) | 2021.04.05 |
[Baekjoon/백준] 2720번 Python (0) | 2021.04.05 |
[Baekjoon/백준] 10988번 Python (0) | 2021.04.05 |