목록python/알고리즘 (24)
incastle의 콩나물
def select_stops(water_stops, capacity): full_water = 1 save_index = [] i = 0 while i 0: i += 1 elif capacity*full_water - water_stops[i] == 0: i += 1 full_water += 1 save_index.append(water_stops[i]) else: i -= 1 full_water += 1 save_index.append(water_stops[i-1]) return(save_index) 내가 계속 헤맸던 부분은 현재 약수터에서 안되면 이전 약수터로 어떻게 돌아가느냐?라는 것이었..
거듭제곱을 계산하는 함수를 작성하는 것 시간 복잡도 n으로 계산을 하면 굉장히 쉽다. def power(x, y): if y == 0: return (1) else: return(power(x,y-1)*x) 하지만 시간 복잡도를 logN으로 줄이고 싶다면 이야기는 달라진다. def power(x, y): if y == 0: return 1 # 계산을 한 번만 하기 위해서 변수에 저장 semi_result = power(x, y // 2) # 문제를 최대한 똑같은 크기의 문제 두 개로 나눠준다 (짝수, 홀수 경우 따로) if y % 2 == 0: return semi_result * semi_result else: return x * semi_result * semi_result 3^4은 (3^2) * (..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bxEeYJ/btquw2Cl34F/ZBik4pcSH4H5IOETuTKKJK/img.png)
문제를 어렵게 생각한 거 같은 느낌(항상 그렇지만). 어렵게 생각하지만 푸는 건 빠르니까 상관없나..? 분수들이 ...더보기 1/1 1/2 2/1 3/1 2/2 1/3 1/4 2/3 3/2 4/1 이렇게 1,2,3,4 뭉치로 iteration이 존재해서 우리가 원하는 number가 어떤 iteration에 속하는지 파악하는 게 핵심이다. 구글링 찬스를 쓴 부분은 짝수 홀수를 구별하는 게 순간 생각이 안 나서 찾아봄 if number % 2 == 0 이걸로 쉽게 해결 def fraction(number): n = 1 while True: if number == 1: return (0,0) elif n*(n+1)/2 >= number: return((int(n*(n-1)/2)),n) else: pass n ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/HvXtb/btquxn0woNq/KXWvCIOfMw6VdMBxW4tuNk/img.png)
문제 평소 반상회에 참석하는 것을 좋아하는 주희는 이번 기회에 부녀회장이 되고 싶어 각 층의 사람들을 불러 모아 반상회를 주최하려고 한다. 이 아파트에 거주를 하려면 조건이 있는데, “a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다” 는 계약 조항을 꼭 지키고 들어와야 한다. 아파트에 비어있는 집은 없고 모든 거주민들이 이 계약 조건을 지키고 왔다고 가정했을 때, 주어지는 양의 정수 k와 n에 대해 k층에 n호에는 몇 명이 살고 있는지 출력하라. 단, 아파트에는 0층부터 있고 각층에는 1호부터 있으며, 0층의 i호에는 i명이 산다. codeit 강의를 열심히 들은 나에게는!!! 매우 쉬웠다 ㅎ 이번에도 다른 사람들의 풀이를 봤지만 내꺼가 ..