Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 백준
- 더현대서울 맛집
- 금융문자분석경진대회
- programmers
- github
- 프로그래머스 파이썬
- Real or Not? NLP with Disaster Tweets
- ubuntu
- AI 경진대회
- 데이콘
- gs25
- hackerrank
- dacon
- Docker
- Git
- 우분투
- 코로나19
- 편스토랑
- leetcode
- 자연어처리
- Baekjoon
- ChatGPT
- 편스토랑 우승상품
- 캐치카페
- 프로그래머스
- 맥북
- 파이썬
- PYTHON
- SW Expert Academy
- Kaggle
Archives
- Today
- Total
솜씨좋은장씨
[Programmers] 옹알이 (2) (Python) 본문
728x90
반응형
코딩 1일 1문제! 오늘의 문제는 프로그래머스의 옹알이 (2) 입니다.
👨🏻💻 문제 풀이
1. 발음 단어의 맨 앞 단어를 key 로 발음 단어를 value 로 하는 dictionary 를 만들어 줍니다.
pronunciation = [ "aya", "ye", "woo", "ma" ]
word_dict = {
word[0]: word for word in pronunciation
}
# word_dict = {"a": "aya", "y": "ye", "w": "woo", "m": "ma"}
2. 1번에서 만든 dictionary 를 활용하여 아기가 발음할 수 있는 옹알이 인지 아닌지 확인하는 함수를 만들었습니다.
def validate_babbling(babble, word_dict):
is_validate = False
before_use_key = ""
while True:
if len(babble) == 0:
is_validate = True
break
key = babble[0]
if key not in word_dict:
break
if before_use_key == key:
break
word = word_dict[key]
if babble[:len(word)] == word:
babble = babble[len(word):]
before_use_key = key
elif babble[:len(word)] != word:
break
return is_validate
- 아기는 "aya", "ye", "woo", "ma" 발음만 가능하고 하나의 발음은 연속되지 않게만 사용할 수 있습니다.
while 반복문 안에서
while True:
- 단어의 맨 앞 단어를 key 값으로 만들고
key = babble[0]
- 이 key 값이 1번에서 만들었던 dictionary 에 없거나
if key not in word_dict:
break
- 바로 이전에 check 했던 key 와 동일한 key 인 경우
if before_use_key == key:
break
- word_dict 에서 key 값으로 꺼내온 단어와 맨 앞부터 word 길이 만큼 가져온 값과 word 와 다른 경우
elif babble[:len(word)] != word:
break
-> is_validate = False
is_validate = False
- word_dict 에서 key 값으로 꺼내온 단어와 맨 앞부터 word 길이 만큼 가져온 값과 word 와 같은 경우
if babble[:len(word)] == word:
ㄴ 현재 비교하고 있는 단어에서 앞에서 word 만큼 자른 값을 넣어주고
babble = babble[len(word):]
ㄴ 연속으로 발음했는지 확인할때 사용하는 before_use_key 에 현재 key 값을 넣어줍니다.
before_use_key = key
- 마지막으로 위 과정을 거친 단어의 길이가 0 일 경우 is_validate 를 True 로 바꾸어 주고 종료합니다.
if len(babble) == 0:
is_validate = True
break
3. 2번에서 만든 함수를 활용하여 아기가 옹알이로 발음할 수 있는 단어로 확인된 경우 answer 를 +1 합니다.
answer = 0
for babble in babbling:
if validate_babbling(babble=babble, word_dict=word_dict):
answer += 1
👨🏻💻 코드 ( Solution )
def validate_babbling(babble, word_dict):
is_validate = False
before_use_key = ""
while True:
if len(babble) == 0:
is_validate = True
break
key = babble[0]
if key not in word_dict:
break
if before_use_key == key:
break
word = word_dict[key]
if babble[:len(word)] == word:
babble = babble[len(word):]
before_use_key = key
elif babble[:len(word)] != word:
break
return is_validate
def solution(babbling):
answer = 0
pronunciation = [ "aya", "ye", "woo", "ma" ]
word_dict = {
word[0]: word for word in pronunciation
}
for babble in babbling:
if validate_babbling(babble=babble, word_dict=word_dict):
answer += 1
return answer
'Programming > 코딩 1일 1문제' 카테고리의 다른 글
[Programmers] 명예의 전당 (1) (Python) (0) | 2023.02.22 |
---|---|
[Programmers] 분수의 덧셈 (Python) (0) | 2023.02.21 |
[Programmers] 카드 뭉치 (Python) (0) | 2023.02.19 |
[Programmers] 컨트롤 제트 (Python) (0) | 2023.02.18 |
[Programmers] OX퀴즈 (Python) (0) | 2023.02.16 |
Comments