| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 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 | 
- 더현대서울 맛집
- dacon
- 맥북
- Docker
- 백준
- 자연어처리
- 캐치카페
- leetcode
- Real or Not? NLP with Disaster Tweets
- 데이콘
- AI 경진대회
- 편스토랑 우승상품
- 금융문자분석경진대회
- gs25
- 편스토랑
- PYTHON
- 파이썬
- 우분투
- hackerrank
- Kaggle
- 프로그래머스
- SW Expert Academy
- github
- 프로그래머스 파이썬
- ubuntu
- 코로나19
- programmers
- Baekjoon
- Git
- ChatGPT
- Today
- Total
솜씨좋은장씨
[Programmers] 옹알이 (2) (Python) 본문

코딩 1일 1문제! 오늘의 문제는 프로그래머스의 옹알이 (2) 입니다.
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
👨🏻💻 문제 풀이
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 answerGitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07
1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.
github.com
'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 | 
 
						
					 
					 
													 
													 
													