반응형
250x250
Notice
Recent Posts
Recent Comments
Link
DecordRay
[프로그래머스] Level1 : 옹알이(2)[Python] 본문
728x90
반응형
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/133499
두 가지의 방법으로 풀었다.
첫번째 방법은 문제를 보고 생각나는데로 구현하여 해결을 하였고, 두번째 방법은 첫번째 방법이 코드가 너무 길고 가독성이 좋지 않아서 최대한 짧게 줄여보는 식으로 생각을 해서 풀이하였다.
풀이 :
첫번째 방법(단순 구현)
1. 'aya', 'ye', 'woo', 'ma' 각각에 케이스마다 조건문을 나눈 후 각 케이스마다 구현
두번째 방법(머리를 조금(?) 쓴 구현)
1. 문자열이 연속적으로 반복되는 경우를 판별 후(if j*2 not in i를 통해) 4가지 문자열 중 해당하는 문자열이 있으면 공백으로 치환
2. 반복문 수행 후 strip() 메소드를 통해 공백을 모두 제거해 준 후 문자열의 개수가 0일 경우 발음이 가능한 경우이므로 answer + 1을 해줌
코드 :
첫번째 방법(단순 구현)
def solution(babbling):
answer = 0
def possible_chk(s):
i = 0
chk = True
aya_chk = 0
ye_chk = 0
woo_chk = 0
ma_chk = 0
while True:
if i == len(s):
break
if s[i] == 'a':
if s[i:i+3] == 'aya' and aya_chk == 0:
i = i+3
aya_chk += 1
ye_chk = 0
woo_chk = 0
ma_chk = 0
continue
else:
chk = False
break
elif s[i] == 'y':
if s[i:i+2] == 'ye' and ye_chk == 0:
i = i+2
ye_chk += 1
aya_chk = 0
woo_chk = 0
ma_chk = 0
continue
else:
chk = False
break
elif s[i] == 'w':
if s[i:i+3] == 'woo' and woo_chk == 0:
i = i+3
woo_chk += 1
ye_chk = 0
aya_chk = 0
ma_chk = 0
continue
else:
chk = False
break
elif s[i] == 'm':
if s[i:i+2] == 'ma' and ma_chk == 0:
i = i+2
ma_chk += 1
aya_chk = 0
ye_chk = 0
woo_chk = 0
continue
else:
chk = False
break
else:
chk = False
break
return chk
for i in range(len(babbling)):
if possible_chk(babbling[i]):
answer += 1
return answer
두번째 방법(머리를 조금(?) 쓴 구현)
def solution(babbling):
answer = 0
for i in babbling:
for j in ['aya','ye','woo','ma']:
if j*2 not in i:
i=i.replace(j,' ')
print("i =", i)
if len(i.strip())==0:
answer +=1
return answer
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Level1 : 개인정보 수집 유효기간[Python] (0) | 2023.02.06 |
---|---|
[프로그래머스] Level1 : 둘만의 암호[Python] (0) | 2023.02.06 |
[프로그래머스] Level1 : 햄버거 만들기[Python] (0) | 2023.02.03 |
[프로그래머스] Level1 : 문자열 나누기[Python] (0) | 2023.02.03 |
[프로그래머스] Level1 : 기사단의 무기[Python] (0) | 2023.02.03 |
Comments