본문 바로가기

728x90

분류 전체보기

(180)
프로그래머스 LV2 [1차] 캐시 from collections import dequedef solution(cacheSize, cities): answer = 0; # 큐 생성 q = deque(); for i in cities : i = i.lower(); if cacheSize == 0 : return len(cities) * 5; # 이미 존재할때 삭제하고 새로 삽입 if i in q : q.remove(i); q.append(i); answer+=1; # 큐에 아무것도 없을때 elif len(q) != cach..
프로그래머스 LV2 n^2배열 자르기 def solution(n, left, right): answer = []; for i in range(left,right+1) : a = i // n; b = i % n; answer.append(max(a,b)+1); return answer풀이 및 회고처음엔 2차원 배열을 사용해야하나 생각이 나질 않아서 구글링으로 풀이를 찾아 풀었다.배열을 펼쳤을때 같은 규칙을 가지는것은 알고 있었는데 풀이로 해결하는 방법을 잘 몰랐다..
프로그래머스 LV2 행렬의 곱셈 def solution(arr1, arr2): answer = [] for i in range(len(arr1)): row = [] for j in range(len(arr2[0])): value = 0 for k in range(len(arr2)): value += arr1[i][k] * arr2[k][j] row.append(value) answer.append(row) return answer 풀이 및 회고우선, 행렬의 곱을 하기 위해선 행렬의 곱 공식을 알아야할 수 있다. 첫번째 열과 두번째 행 요소들 끼리 각각 곱한 것을 더해주고 행에 추가해주는 원리(..
프로그래머스 LV 2 H-INDEX def solution(c): answer = 0 c.sort(); # i는 인덱스 v는 값 for i,v in enumerate(c) : if (v >= len(c) - i) : return len(c) - i; return answer풀이 및 회고문제 이해하는데 오래 걸려서 시간이 꽤 걸렸습니다. 정렬을 한 후 인용횟수가 인용횟수 이상인 것과 이하인 것이 같을때 그 값을 return 하면 됩니다.
프로그래머스 LV2 할인행사 from collections import Counterdef solution(want, number, discount): answer = 0; dict = {}; for i in range(len(want)) : dict[want[i]] = number[i]; for i in range(len(discount)-9) : if Counter(discount[i:i+10]) == dict : answer +=1; return answer풀이 및 회고지난 문제를 풀었을때 딕셔너리를 활용해 키-밸류 정보를 저장하고 Counter 라는 라이브러리 함수를 사용하여 discount 배열을 비교하고 맞으면 +1 을 하여 풀..
프로그래머스 LV2 점프와 순간 이동 def solution(n): ans = 0 while(n > 0) : if(n % 2 == 0) : n/=2; else : n-=1; ans +=1; return ans풀이 및 회고이런 문제는 식을 금방 파악하면 풀 수 있을거 같아서 예제들을 풀이를 먼저 해봤습니다. 순간이동은 현 위치 *2 만큼 할 수 있으니 1에서 이동하면 2, 5에서 이동하면 10 이런 식으로 순간이동을 할 수 있는 성질을 이용했습니다. N = 5 일때 2.5칸에서 순간이동을 해야하는데 할 수가 없습니다. 여기서 알게된 점은 홀수 일때는 1칸을 무조건 이동해야 도달할 수 있는것을 알 수 있습니다. 그래서 0 -> 1 ..
프로그래머스 LV 2 귤고르기 def solution(k, tangerine): answer = 0; d = {}; for i in tangerine : if (i in d) : d[i] += 1; else : d[i] = 1; d = dict(sorted(d.items(), key=lambda item: item[1], reverse=True)) for i in d : k -= d[i]; answer+=1; if (k 풀이 및 회고처음에는 max 내장함수를 사용해서 코드를 작성했는데, 시간복잡도가 좋지 않다는 생각했습니다. 그래서 딕셔너리로 갯수를 저장하고 정렬을 하고나서 많은 수 ..
프로그래머스 LV 2 멀리 뛰기 def solution(n): dp = [0]*2001; dp[0]=1; dp[1] = 1; dp[2] = 2; dp[3] = 3; for i in range(2,n+1): dp[i] = dp[i-2] + dp[i-1] return dp[n] % 1234567풀이 및 회고간단한 DP 문제 입니다. 공책에 써가면서 풀면 쉽게 이해할 수 있습니다.

728x90