내 코드
def solution(babbling):
valid = ["aya", "ye", "woo", "ma"]
answer = 0
for i in babbling:
for j in valid:
if j in i:
i = i.replace(j, " ", 1)
if i.strip() == "":
answer += 1
return answer
코드 설명
- 발음 가능한 소리 정의:
["aya", "ye", "woo", "ma"]를 리스트로 저장해 조카가 발음할 수 있는 소리를 정의합니다. - 문자열 순회:
주어진 babbling 배열의 각 단어를 확인하며 발음 가능한 소리가 포함되어 있는지 체크합니다. - 발음 제거:
각 발음을 단어에서 한 번만 제거합니다. replace() 메서드를 사용해 중복 제거되지 않도록 합니다. - 유효성 검사:
모든 발음을 제거한 후 남은 단어가 빈 문자열이라면 카운트에 추가합니다. - 결과 반환:
조건을 만족하는 단어의 개수를 반환합니다.
특징
- 각 발음을 한 번씩만 제거하도록 설계되었습니다.
- 간단한 반복문과 문자열 메서드를 활용해 가독성을 높였습니다.
다른 코드
import re
def solution(babbling):
regex = re.compile('^(aya|ye|woo|ma)+$')
cnt = 0
for e in babbling:
if regex.match(e):
cnt += 1
return cnt
코드 설명
- 정규식 정의:
정규식을 이용해 ^(aya|ye|woo|ma)+$ 패턴을 정의합니다.- aya|ye|woo|ma: 발음 가능한 소리.
- +: 발음들이 반복될 수 있지만 반드시 연속적으로 이어져야 함.
- ^와 $: 문자열의 시작과 끝을 명시해 발음 외의 내용이 없음을 확인.
- 문자열 순회:
주어진 babbling 배열의 각 단어를 정규식 패턴과 비교합니다. - 유효성 검사:
정규식 패턴에 매칭되는 단어가 있다면 카운트를 증가시킵니다. - 결과 반환:
조건을 만족하는 단어의 개수를 반환합니다.
특징
- 정규식을 활용해 코드 길이를 줄이고 간결하게 작성되었습니다.
- 문자열 검증에 강력한 정규식의 특성을 활용했습니다.
두 코드 비교
- 구현 방식:
- 내 코드는 반복문과 문자열 메서드(replace)를 활용해 직접적으로 발음을 제거하며 처리합니다.
- 다른 코드는 정규식을 사용해 발음이 조건을 만족하는지 한 번에 확인합니다.
- 가독성:
- 내 코드는 직관적이고 로직이 명확해 초보자도 이해하기 쉽습니다.
- 다른 코드는 정규식의 사용법을 알아야 하므로 이해를 위해 약간의 사전 지식이 필요합니다.
- 효율성:
- 내 코드는 발음 가능한 소리의 개수에 따라 반복문이 중첩되므로 상대적으로 느릴 수 있습니다.
- 다른 코드는 정규식을 사용해 빠르게 검증할 수 있어 효율적입니다.
결론
두 코드 모두 문제를 올바르게 해결합니다.
- 직관적이고 이해하기 쉬운 코드를 선호한다면 내 코드가 적합합니다.
- 효율성과 간결성을 중시한다면 정규식을 활용한 다른 코드가 적합합니다.
'프로그래머스' 카테고리의 다른 글
프로그래머스 | Python | 평행 (0) | 2025.01.22 |
---|---|
프로그래머스 | Python | 겹치는 선분의 길이 (1) | 2025.01.21 |
프로그래머스 | Python | 안전지대 (1) | 2025.01.20 |
프로그래머스 | Python | 연속된 수의 합 (2) | 2025.01.17 |
프로그래머스 | Python | 다음에 올 숫자 (0) | 2025.01.17 |