Notice
Recent Posts
Recent Comments
Link
나의 개발일지
[프로그래머스] Lv.0 옹알이 (1) [Python, 파이썬] 본문
Lv.0 중 가장 정답률이 낮은 문제입니다.
- 저의 풀이는 기본적인 2중 for 문 구조와 replace() 함수만 알고 있으면 쉽게 이해가 될 것 같습니다.
- 밑에 해석도 있으니 어렵다면 천천히 보면서 이해에 도움이 되시길 바랍니다.
def solution(babbling):
answer = 0
li = ["aya", "ye", "woo", "ma"]
for i in range(len(babbling)):
for j in range(len(li)):
babbling[i] = babbling[i].replace(li[j], "*")
if babbling[i] == "*" or babbling[i] == "**" or \
babbling[i] == "***" or babbling[i] == "****":
answer += 1
return answer
🔑 키워드 : replace()
- 문자열.replace(기존 문자열, 새로운 문자열, 횟수)
- 기존 문자열을 새로운 문자열로 바꾸는 함수
- 횟수를 지정하면 왼쪽부터 오른쪽으로 가면서 횟수만큼 변경, 지정 안하면 전체를 바꿈
2중 for 문 구조 해석
for i in range(len(babbling)):
for j in range(len(li)):
babbling[i] = babbling[i].replace(li[j], "*")
매개 변수(babbling) 리스트의 길이 만큼과 옹알이(li)가 들어있는 리스트의 길이 만큼의 2중 for 문 구조
li = ["aya", "ye", "woo", "ma"]
babbling = ["ayaye", "uuuma", "ye", "yemawoo", "ayaa"]
1. 첫 반복문일 때 babbling[i] = babbling[i].replace(li[j], "*") 문장은
babbling[i] = "ayaye".replace("aya", "*") 와 같다.
babbling의 첫 요소인 "ayaye"에서 "aya"를 "*"로 변경하라는 문장
그러면 babbling의 첫 요소는 "ayaye" -> "*ye"가 된다.
2. 2중 for 문 구조로 babbling의 각 요소마다 옹알이를 모두 반복해야 다음 babbling 요소로 넘어간다.
그렇기 때문에 변경된 "*ye"를 다음 옹알이 요소로 찾고 있으면 바꾸는 작업을 한다.
두 번째 반복에서는 babbling[i] = "*ye".replace("ye", "*")가 될 것이다.
"ye"가 문자열에 있기 때문에 "*"로 바꾸고 최종적으로 babbling의 첫 요소는 "**"이 된다.
3. 이런 식으로 babbling의 모든 요소를 돌면서 옹알이가 들어있으면 "*"로 바꾸는 작업을 한다.
최종적으로 babbliing의 요소는 ['**', 'uuu*', '*', '***', '*a'] 이렇게 바뀐다.
if 문 구조 해석
for i in range(len(babbling)):
for j in range(len(li)):
babbling[i] = babbling[i].replace(li[j], "*")
if babbling[i] == "*" or babbling[i] == "**" or \
babbling[i] == "***" or babbling[i] == "****":
answer += 1
최종 babbling = ['**', 'uuu*', '*', '***', '*a']
1. babbling의 한 요소에 옹알이를 전부 돌면서 바꾸는 작업을 끝내면 if 문으로 검사를 한다.
2. babbling의 요소가 "*", "**", "***", "****"이라면 answer을 1 올려준다.
요소의 문자열이 "*"로만 되어있다면 머쓱이가 발음할 수 있는 옹알이로만 구성되어 있다는 것이다.
"uuu*"처럼 "*"로만 구성이 되어있지 않은 요소는 "uuu"는 발음할 수 없기 때문에 "*"로
바뀌지 못했고 카운트할 요소로 포함시키지 않는다.
3. 요소가 "*"로만 이루어진 것이 0번, 2번, 3번 인덱스 요소 3개로 answer = 3이 리턴된다.
'프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv.1 K번째 수 [Python, 파이썬] (0) | 2023.02.16 |
---|---|
[프로그래머스] Lv.0 소인수분해 [Python, 파이썬] (0) | 2022.12.29 |
[프로그래머스] Lv.0 공 던지기 [Python, 파이썬] (0) | 2022.12.27 |
[프로그래머스] Lv.0 숨어있는 숫자의 덧셈 (2) [Python, 파이썬] (0) | 2022.12.27 |
[프로그래머스] Lv.0 가까운 수 [Python, 파이썬] (0) | 2022.12.22 |
Comments