일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Programmers
- github
- level2
- level 3
- 프로그래머스
- 타겟 넘버
- 머신러닝
- 선형회귀
- 더 맵게
- themida
- level3
- level 2
- DFS/BFS
- level1
- 동적계획법
- 자물쇠와 열쇠
- 동빈나
- 같은숫자는싫어
- vscode
- 문자열압축
- 스택/큐
- 2020 KAKAO BLIND RECRUITMENT
- 베스트앨범
- Python3
- 개발
- 코딩테스트
- pwnable
- 여행경로
- 전화번호 목록
- Today
- Total
목록코딩테스트 (10)
hoon

문제 설명이 괴랄하다... 다행히 질문에 문제 지문의 재해석이라는 글을 올려주신 분이 있어 해당 글을 보고 이해가 가능하다. 입출력에 예는 다음과 같이 바뀌어야 된다. ----------------------------------------------------------------------------------------- 1초의 주가는 1이며 1초부터 5초까지 총 4초간 주가를 유지했습니다. 2초의 주가는 2이며 2초부터 5초까지 총 3초간 주가를 유지했습니다. 3초의 주가는 3이며 4초의 주가는 2로 주가가 떨어졌지만 3초에서 4초가 되기 직전까지의 1초간 주가가 유지 된것으로 봅니다. 따라서 5초까지 총 1초간 주가를 유지했습니다. 4초의 주가는 2이며 4초부터 5초까지 총 1초간 주가를 유지했..

3번 기준 땜시 dict의 형태를 price와 고유번호를 같이 주는 형태로 변경해야 된다. 그걸 제외하면 dict를 2개쓰든 1개를 쓰든 상관은 없다. 테스트 케이스 2, 15 예시 ------------------------------------------------------------------- prammeters ------------------------------------------------------------------- ["classic", "pop", "classic", "classic", "pop", "pop"] [500, 600, 150, 800, 2500, 2500] -------------------------------------------------------------..

모든 옷의 수 + 1(안입을 때 경우의수)를 전부 곱하고 아예안입는 경우의 수 1을 빼면 모든 옷에 대한 조합의 수가 나온다. 처음에 안입는 경우를 생각안하고 모든 경우를 구하려고 했지만 (조합모듈을 사용해서) 테스트 케이스 1번은 30개의 옷의 종류가 주어져 시간초과가 나와 실패한다. def solution(clothes): answer = 1 clo = {} for c in clothes: clo[c[1]] = clo.get(c[1],[]) clo[c[1]].append(c[0]) for k in clo: answer *= len(clo[k]) + 1 answer -= 1 return answer

- 시작지점 설정 def solution(numbers, target): answer = 0 stack = [[numbers[0],0],[-1*numbers[0],0]] #start length = len(numbers) while len(stack) > 0: tmp, idx = stack.pop() idx += 1 if idx < length: stack.append([tmp+numbers[idx],idx]) stack.append([tmp-numbers[idx],idx]) else: if tmp == target: answer += 1 return answer BFS를 사용하려면 queue를 이용하고 deque.popleft나 pop(0) 사용해야됨

DFS : Depth-First Search > 스택을 이용하여 어느 정점에서 DFS를 하고 있는지를 기억하고 되돌아감 BFS : Breadth-First Search > 큐를 사용하여 어느 정점에서 BFS를 해야 하는지를 기록하고 진행함 DFS를 응용 - 한붓 그리기 문제이다. - 시작 정점은 "ICN" - 모든 간선을 거쳐야됨 - 한 정점에서 택할 수 있는 간선이 여러 개인 경우 알파벳 순서를 따름 def solution(tickets): routes = {} for t in tickets: routes[t[0]] = routes.get(t[0],[]) + [t[1]] for r in routes: routes[r].sort(reverse = True) stack = ["ICN"] path = [] ..

최소 힙을 사용하는 문제 import heapq def solution(scoville, K): answer = 0 heapq.heapify(scoville) while True: min1 = heapq.heappop(scoville) if min1 >= K: break if len(scoville) == 0: answer = -1 break min2 = heapq.heappop(scoville) new_scoville = min1 + min2 * 2 heapq.heappush(scoville, new_scoville) answer += 1 return answer
def solution(numlist, n): # lambda 사용 시 tuple을 사용하여 값을 줄 수 있는데 처음을 기준후 정렬 후 그다음 걸기준으로 또 정렬한다. numlist.sort(key=lambda x:(abs(x-n),-x)) return numlist

링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42898 최단 거리 문제이다. 처음에 공식으로 날먹할려다 '최단거리 - 방해물을 거쳐가는 길'은 방해물들을 거쳐가는 길에 중복이 생긴다는 것을 늦게 깨닫고 문제의 의도대로 동적 계획법을 사용해야됨을 절실히 깨달았다. 풀이 1 def solution(m, n, puddles): path = [[0]*m for i in range(n)] x = 0 y = 0 while [x+1, 1] not in puddles and x in range(m): path[0][x] = 1 x += 1 while [1, y+1] not in puddles and y in range(n): path[y][0] = 1..
문제 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다. 간단한 예로 "aabbaccc"의 경우 "2a2ba3c"(문자가 반복되지 않아 한번만 나타난 경우 1은 생략함)와 같이 표현할 수 있는데, 이러한 방식은 반복되는 문자가 적은 경우 압축률이 낮다는 단점이 있습니다. 예를 들면, "abcabcdede"와 같은 문자열은 전혀 압축되지 않습니다. "어피치"는 이러한 단점을 해결하기 위해 문자열을 1개 이상의 단위로 잘라서 ..
혼자서 열심히 풀려고 했지만 1시간 안에 푸는 게 불가능해 답을 보면서 공부하기로 했다. ㅠ 풀이 힌트 1. key 회전 2. 자물쇠 확장 import copy def expend_lock(lock, N, M, size): # 자물쇠를 확장시키는 함수 # 순수 함수 expended_lock = [[0 for i in range(size)] for _ in range(size)] for y in range(N): for x in range(N): expended_lock[y + M - 1][x + M - 1] = lock[y][x] return expended_lock def rotate(key): # *key는 껍질(Unpacking)을 벗겨내는 역할을 합니다. [] () {} # [(0, 0, 0), ..