-
내가 생각한 방식으로 풀려고 하니까 for문이 너무 많이 중첩된다..
그래서 다른 사람 풀이를 참고를 해봤다.
일단 옹알이 (1) 코드를 확인을 해봤고, 옹알이 (2) 에서는 추가 조건이 있기 때문에
그건 옹알이 (1) 코드에 내가 추가를 하는 걸로!
문제 설명
제한사항
입출력 예 및 설명
문제 풀이
def solution(babbling): answer = 0 # 연속은 불가 옹알이list = ["aya", "ye", "woo", "ma"] for word in babbling: # 만들고 싶은 단어 check=True # 옹알이로 단어를 완성할 수 있는지 확인하는 변수. 단어 완성할 수 없다면 False로 넣어줄 예정 for 옹알이 in 옹알이list: # ↓ 옹알이를 연속해서 사용할 수 없기 때문에 옹알이*2가 만들고자 하는 단어에 있으면 안된다 if (옹알이 in word) and (옹알이*2 not in word): word = word.replace(옹알이, '*') # 옹알이가 단어에 포함된다면 '*'로 바꾸기 # '*'로 replace된 단어를 하나씩 돌면서 단어의 모든 문자가 '*'로 바꼈다면 옹알이로 만들 수 있는 단어, # '*'가 아닌 문자가 있다면 옹알이로 표현할 수 없는 단어! check변수를 False라고 바꿔준다. for w in word: if w != '*': check=False if check: # check가 True라면 answer += 1 return answer
채점 결과
다른 사람 풀이
def solution(babbling): count = 0 for b in babbling: if "ayaaya" in b or "yeye" in b or "woowoo" in b or "mama" in b: # 연속 불가능 조건 continue # ↓ not이 중요! 마지막에 ' ' 을 ''로 바꿔줬을 때 b가 ''이면 False이기 때문에 not Fasle여서 True가 된다. # 그래서 결론은, 단어가 ''일 때(옹알이로 표현이 가능할 때) count += 1 if not b.replace("aya", " ").replace("ye", " ").replace("woo", " ").replace("ma", " ").replace(" ", ""): count += 1 return count
다른 사람 풀이 채점 결과
문제 출처 : 프로그래머스
'코딩테스트 연습' 카테고리의 다른 글
뒤에 있는 큰 수 찾기 (2) 2023.11.29 명예의 전당 (1) (0) 2023.11.27 문자열 나누기 (0) 2023.11.17 개인정보 수집 유효기간(2023 KAKAO BLIND RECRUITMENT) (1) 2023.11.16 카드 뭉치 (0) 2023.11.15