incastle의 콩나물
거듭제곱을 계산하는 함수를 작성하는 것 시간 복잡도 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) * (..
문제를 어렵게 생각한 거 같은 느낌(항상 그렇지만). 어렵게 생각하지만 푸는 건 빠르니까 상관없나..? 분수들이 ...더보기 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 ..
문제 평소 반상회에 참석하는 것을 좋아하는 주희는 이번 기회에 부녀회장이 되고 싶어 각 층의 사람들을 불러 모아 반상회를 주최하려고 한다. 이 아파트에 거주를 하려면 조건이 있는데, “a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다” 는 계약 조항을 꼭 지키고 들어와야 한다. 아파트에 비어있는 집은 없고 모든 거주민들이 이 계약 조건을 지키고 왔다고 가정했을 때, 주어지는 양의 정수 k와 n에 대해 k층에 n호에는 몇 명이 살고 있는지 출력하라. 단, 아파트에는 0층부터 있고 각층에는 1호부터 있으며, 0층의 i호에는 i명이 산다. codeit 강의를 열심히 들은 나에게는!!! 매우 쉬웠다 ㅎ 이번에도 다른 사람들의 풀이를 봤지만 내꺼가 ..
문제 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다. 단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오. 확실히 dictinary에 나는 빠졌다. times = int(input()) outer_count = 0 # 그룹 단어의 전체 수를 count for _ in range(times): text = input() inner_count = 0 # 이 단어가 그룹 단어인지 파악하기 위한 count dict_list =..