4659_비밀번호 발음하기 (Python)
0. 출처
- 유형 : 문자열, 구현 (silver 4)
- 링크 : 4659번: 비밀번호 발음하기
1. 기록
- 22/03/29 (화)
2. 풀이
(1) 아이디어, 시간복잡도, 자료구조
1. 아이디어
>> 문제에서 제시된 내용으로 구현한다.
>> 모음(a,e,i,o,u) 하나를 반드시 포함하여야 한다. -> 반드시 하나 이상 포함되어야 한다를 어떻게 코드로 작성할지?
>> 모음이 3개 혹은 자음이 3개 연속으로 오면 안 된다. -> ex. aei, bcd 등은 허용x
>> 같은 글자가 연속적으로 두번 오면 안되나, ee 와 oo는 허용한다. -> aa, bb, cc 등은 허용x
2. 시간복잡도
>>
3. 자료구조
>>
(2) 예제 입력, 예제 출력
- 예제 입력 1 -
a
tv
ptoui
bontres
zoggax
wiinq
eep
houctuh
end
- 예제 출력 1 -
<a> is acceptable.
<tv> is not acceptable.
<ptoui> is not acceptable.
<bontres> is not acceptable.
<zoggax> is not acceptable.
<wiinq> is not acceptable.
<eep> is acceptable.
<houctuh> is acceptable.
(3) 코드
vowels = "aeiou"
while True:
s = input()
if s == "end":
break
v = 0
k = 1
for i in range(len(s)):
if s[i] in vowels:
v = 1
if i > 0:
if s[i] == s[i-1] and s[i] != 'e' and s[i] != 'o':
k = 0
break
if i > 1:
if s[i] not in vowels:
if s[i-1] not in vowels:
if s[i-2] not in vowels:
k = 0
break
if s[i] in vowels:
if s[i-1] in vowels:
if s[i-2] in vowels:
k = 0
break
if v == 1 and k == 1:
print(f"<{s}> is acceptable.")
else:
print(f"<{s}> is not acceptable.")
(4) 정리
문자열 유형 문제의 구현이 난이도가 올라갈수록 복잡해지는 것 같습니다.
a,e,i,o,u 하나하나를 배열에 담아서 확인해야하나 생각했는데 'aeiou'를 문자열로 확인하는 방법이 있음을 배웠습니다.
(5) 참고
'코테기록 > 백준' 카테고리의 다른 글
[백준] 2870_수학숙제 (Python) (0) | 2022.03.29 |
---|---|
[백준] 1543_문서 검색 (Python) (0) | 2022.03.29 |
[백준] 14405_피카츄 (Python) (0) | 2022.03.29 |
[백준] 15904_UCPC는 무엇의 약자일까? (Python) (0) | 2022.03.28 |
[백준] 15881_Pen Pineapple Apple Pen (Python) (0) | 2022.03.28 |