[프로그래머스] 이진변환 반복하기 - 내장함수 잘 알기
[프로그래머스] LV2 - 내장함수 잘 알기
문제 링크 : 내장함수 잘 알기
💡 내가 푼 코드
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
def del_0(a):
cnt = 0
new = ""
for s in a:
if s=="1":
new += "1"
continue
cnt += 1
return cnt, new
def solution(s):
ans_0 = 0
new_s = ""
ans = 0
while s!="1":
tmp_0, new_s = del_0(s)
s = bin(len(new_s))[2:]
ans_0 += tmp_0
ans += 1
return [ans, ans_0]
- Test Case에 대해서 정답이 잘 나왔으나 실패로 떴다.
- 찾아보니, 나와 같이 틀린 이유를 모르는 사람들이 많았고 반례를 찾을 수 있었다.
💡 고쳐야 할 점
이 문제에서 왜 내 코드의 길이가 길어졌나 생각해 보았다.
문자열에서 0의 길이를 계산해야 하는데, 0의 길이를 계산해주는 부분을 함수로 따로 빼서 반복문으로 작성했다.
count
함수를 알았다면? 코드가 훨씬 짧아졌을 것이다.
또, bin 함수도 이번에 찾아보면서 새로 알게 되었다.
💡 바꾼 코드
1
2
3
4
5
6
7
8
9
10
11
12
def solution(s):
cnt_0 = 0
ans = 0
while s!="1":
cnt_0 += s.count('0')
s = str(len(s) - s.count('0'))
s = bin(int(s))[2:]
ans += 1
return [ans, cnt_0]
결과
느낀 점
내장함수를 잘 알고, 기억하자!!!
This post is licensed under CC BY 4.0 by the author.