본문 바로가기

분류 전체보기

(153)
프로그래머스 Level 1 - 실패율 내 정답: def solution(N, stages): a = [] for i in range(1, N+1): success, tries = 0, 0 for stage in stages: if stage > i: success += 1 tries += 1 elif stage == i: tries += 1 if tries: a.append((success/tries,i)) else: a.append((1, i)) return [i[1] for i in sorted(a)] 다른 사람들의 정답: def solution(N, stages): result = {} denominator = len(stages) for stage in range(1, N+1): if denominator != 0: count = s..
프로그래머스 Level 1 - 1차[비밀지도] 내 정답: def solution(n, arr1, arr2): arr_new = [] for i in range(n): s = bin(arr1[i]|arr2[i])[2:].zfill(n) arr_new.append(''.join(['#' if j=='1' else ' ' for j in s])) return arr_new 다른 사람들의 정답: 비트 연산자와 replace def solution(n, arr1, arr2): answer = [] for i,j in zip(arr1,arr2): a12 = str(bin(i|j)[2:]) a12=a12.rjust(n,'0') a12=a12.replace('1','#') a12=a12.replace('0',' ') answer.append(a12) return ..
프로그래머스 Level 1 - 예산 내 정답: 그리디 사용 def solution(d, budget): count = 0 while True: if len(d)
프로그래머스 Level 1 - 콜라츠 추측 내 정답: def solution(num): count = 0 while not num == 1 and count < 500: if num%2: num = num * 3 + 1 else: num /= 2 count += 1 return count if count < 500 else -1 다른 사람들의 정답: def collatz(num): for i in range(500): num = num / 2 if num % 2 == 0 else num*3 + 1 if num == 1: return i + 1 return -1
프로그래머스 Level 1 - 키패드 누르기 내 정답: def solution(numbers, hand): keypad = [ [1,2,3], # [0][0], [0][1], [0][2] [4,5,6], # [1][0], [1][1], [1][2] [7,8,9], # ... 움직여야 할 거리는 abs(i1-i2)+abs(j1-j2) 이다. [98,0,99] ] def find_i_j(num): for i in range(4): for j in range(3): if keypad[i][j] == num: return i,j def dists_l_r(i_n,i_l,i_r,j_n,j_l,j_r): return abs(i_n-i_l)+abs(j_n-j_l), abs(i_n-i_r)+abs(j_n-j_r) answer = '' i_n, j_n, i_l, j..
알고리즘 - 하노이의 탑 재귀적 접근 (Hanoi Tower and Recursive Solving) 하노이의 탑의 규칙은 아래 포스트를 참고한다. https://m.blog.naver.com/jaeyoon_95/221762231876 [프로그래머스] 하노이의 탑 문제 설명하노이 탑(Tower of Hanoi)은 퍼즐의 일종입니다. 세 개의 기둥과 이 기동에 꽂을 수 있는 크기... blog.naver.com 하노이의 탑은 보통 재귀 함수를 사용하여 풀곤 한다. 하노이의 탑을 왜 재귀 함수로 풀 수 있는지, 수학적 접근으로 알아보자. 아래의 하노이의 탑은 하노이의 탑 문제에 대한 풀이를 뜻한다. 먼저 원판이 n개 있다고 했을 때, 한 원판에서 다른 원판까지 옮기는 데 필요한 최소 움직임은 m = 2^n - 1이다. 하노이의 탑의 정답은 언제나 존재한다는 것과, 최소 움직임이 위와 같다는 것을 수학적 귀납..
프로그래머스 Level 1 - 2016년 내 정답: def solution(a, b): days = [31,29,31,30,31,30,31,31,30,31,30,31] yoil = ['THU','FRI','SAT','SUN','MON','TUE','WED'] numday = b for i in range(a-1): numday += days[i] return yoil[numday%7] 다른 사람들의 정답: 나와 비슷한 방식, 그러나 sum함수를 이용하여 좀 더 간결하게 def getDayName(a,b): months = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] days = ['FRI', 'SAT', 'SUN', 'MON', 'TUE', 'WED', 'THU'] return days[(sum(mon..
프로그래머스 Level 1 - 체육복 내 정답: def solution(n, lost, reserve): l_and_r = list(set(lost).intersection(set(reserve))) for i in l_and_r: lost.remove(i) reserve.remove(i) print(lost, reserve) answer = n - len(lost) for i in list(lost): if reserve.count(i-1) > 0: lost.remove(i) reserve.remove(i-1) answer += 1 elif reserve.count(i+1) > 0: lost.remove(i) reserve.remove(i+1) answer += 1 return answer 다른 사람들의 정답: def solution(n,..