본문 바로가기

코딩테스트3

코딩테스트 보기 전 암기할 코드 꿀팁 많은 백준 문제와 프로그래머스 문제를 풀면서, 알고가면 시간 절약에 좋은 코드를 정리해놓고자 한다. 2차원 배열 시계방향 회전 table = list(map(list, zip(*table[::-1]))) 2차원 배열 반시계방향 회전 table = list(map(list, zip(*table)))[::-1] 2차원 배열에서 가장 큰 값 table = [[1, 2, 3],[4, 1, 6], [2, 2, 4]] max_val = max(map(max, table)) print(max_val) # 6 10진수 -> n진수 변환 import string #123...~~~~~~abc...~~~~ possible = string.digits+string.ascii_lowercase def convert(num, .. 2022. 9. 28.
프로그래머스[Python] - 타겟 넘버 풀이 풀이 Permutation형식으로 복잡하게 접근하기 보다, 깊이 우선 탐색(dfs) 너비 우선 탐색(bfs)를 통해 numbers의 모든 값에 하나하나 계산해가면서 풀어나가는 방향을 잡았다. 특히 문제에서 덧셈, 뺄셈만 이용해서 target 값에 도달하라고 했으므로, 초기 경우의 값이 number[0]와 -number[0] 이 두가지를 베이스로 dfs와 bfs구조를 만들어 나가면 된다. dfs의 경우 재귀이기 때문에 재귀 부분을 먼저 짠 후, if를 통해 종료 조건을 잡아주면 된다. from collections import deque ## 재귀함수를 이용한 dfs 풀이 def dfs(numbers, target, depth): answer = 0 if(len(numbers) == depth) : if .. 2022. 8. 6.
프로그래머스[Python] - 더 맵게 풀이 풀이 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2)의 식을 보며 O(NlogN)의 시간 복잡도를 가지는 heap 구조를 가지고 접근을 하였다. import heapq def solution(scoville, K): count = 0## 총 섞은 횟수를 저장하는 변수 heapq.heapify(scoville)## Heap 구조로 만들기 while len(scoville) >= 2: ## Heap 안에 한 개만 있으면 오류 나니까 if scoville[0] >= K:## Heap에서 가장 작은 값이 K보다 크다면 While문 종료 break first = heapq.heappop(scoville) second = heapq.heappo.. 2022. 8. 6.