Coding Test/programmers

1의 갯수가 동일해야 한다는 점에 착안해서 수학적으로 풀어봤다. def solution(n): b = bin(n).replace('0b', '0') m = b.rfind('01') k = b[m+2:].count('1') b = b[:m] + '10' + '0'*(len(b)-m-2-k) + '1'*k answer = int(b, 2) return answer programmers solution def nextBigNumber(n): one_count = bin(n).count('1') for compare_num in range(n+1, 2*n+1): if bin(compare_num).count('1') == one_count: break return compare_num 복잡도가 안좋다고는 하는데..
점프와 순간 이동 def solution(n): ans = 0 def dp(k): if k == 1 or k ==2: return 1 else: return min(dp(k-1)+1, dp(k//2)+k%2) return dp(n) 테케 두개 중 하나가 recursion error가 났다. def solution(n): value = [0] * (n+1) def dp(k, value): if k == 1: return 1 elif k == 2: return 1 else: return min(value[k-1]+1, value[k//2]+k%2) for i in range(1, n+1): value[i] = dp(i, value) return value[n] 이렇게 수정해서 테스트 결과는 바르게 나왔지만 ..
최댓값과 최솟값 def solution(s): s = list(map(int,s.split())) answer = str(min(s)) + " " + str(max(s)) return answer JadenCase 문자열 만들기 '구분자'.join(리스트) : join 함수는 매개변수로 들어온 리스트에 있는 요소 하나하나를 합쳐서 하나의 문자열로 바꾸어 반환하는 함수 '리스트0(구분자)리스트1(구분자)리스트2' 의 형식 def solution(s): snt = s.split() for i in range(len(snt)): if not snt[i][0].isnumeric(): snt[i] = snt[i][0].upper() + snt[i][1:].lower() answer = ' '.join(snt) r..
210B
'Coding Test/programmers' 카테고리의 글 목록