목록분류 전체보기 (274)
여름의 서재
📕 문제 https://programmers.co.kr/learn/courses/30/lessons/87694 코딩테스트 연습 - 아이템 줍기 [[1,1,7,4],[3,2,5,5],[4,3,6,9],[2,6,8,8]] 1 3 7 8 17 [[1,1,8,4],[2,2,4,9],[3,6,9,8],[6,3,7,7]] 9 7 6 1 11 [[2,2,5,5],[1,3,6,4],[3,1,4,6]] 1 4 6 3 10 programmers.co.kr 💡 풀이법 : 혼자 풀어보려다 포기.. 먼저 사각형의 테두리에 해당하는 좌표들을 1로 해서 행렬을 만든다. 좌표를 2배로 할 생각을 한 사람들 정말 대단하다. 2배로 늘리는 이유는 아래와 같다. 파란점에 있을 경우 파란 화살표 방향으로 이동해야하지만 위의 좌표에도 1이 ..
📕 문제 https://programmers.co.kr/learn/courses/30/lessons/64062 코딩테스트 연습 - 징검다리 건너기 [2, 4, 5, 3, 2, 1, 4, 2, 5, 1] 3 3 programmers.co.kr 💡 풀이법 : 배열의 크기가 20만이고 원소들의 값들이 2000만이 최대였기 때문에 바로 logN의 시간복잡도를 가지는 이분탐색을 생각했다. 1. 구하고자 하는 최대 사람수를 1부터 배열의 값 중 가장 큰 값 사이에서 구해야한다. 2. 값을 최소와 최대값의 반으로 설정하고 돌들을 돌면서 그만큼의 사람이 갈 수 있는지 구한다. 3. 갈 수 없으면 값을 줄이고(최소값과 현재 사람수의 반), 갈 수 있다면 값을 늘린다(현재 사람수와 최대값의 반). def solution(..
💡 HTTP 란? : 텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다. 이렇게 규약을 정해두었기 때문에 모든 프로그램이 이 규약에 맞춰 개발해서 서로 정보를 교환할 수 있게 되었다. 💡 HTTP의 특징 메세지 교환 형태의 프로토콜: 클라이언트가 보고 싶은 걸 서버에 요청하면 응답이 온다. 비연결성(Connectionless): 클라이언트와 서버가 한 번 연결을 맺은 후, 클라이언트의 요청을 서버가 응답하면 맺었던 연결을 끊는다. 불특정 다수의 통신을 줄여 더 많은 연결이 가능하지만, 동일한 요청을 새로 요청해야 한다. 무상태(Stateless): 이전 상태를 유지 하지 않는다. 상태를 기억하기 위해서 쿠키, 세션, 토큰이 도입 된다. 💡 HTTP Request (요청) : ..
📕 문제 https://programmers.co.kr/learn/courses/30/lessons/92341 코딩테스트 연습 - 주차 요금 계산 [180, 5000, 10, 600] ["05:34 5961 IN", "06:00 0000 IN", "06:34 0000 OUT", "07:59 5961 OUT", "07:59 0148 IN", "18:59 0000 IN", "19:09 0148 OUT", "22:59 5961 IN", "23:00 5961 OUT"] [14600, 34400, 5000] programmers.co.kr 💡 풀이법 1. 차의 입차 시간과 담을 cars 딕셔너리를 만든다. 2. 차들의 총 주차 시간을 담을 total 딕셔너리를 만든다. 3. records를 돌면서 cars에 입차..
📕 문제 https://programmers.co.kr/learn/courses/30/lessons/1844 코딩테스트 연습 - 게임 맵 최단거리 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,1],[0,0,0,0,1]] 11 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,0],[0,0,0,0,1]] -1 programmers.co.kr 💡 풀이법 : 다익스트라 알고리즘을 사용하는 간단한 문제였다. from collections import deque dxy = [(1,0),(0,1),(-1,0),(0,-1)] def bfs(maps, n, m): deq = deque([(0, 0)]) visited = [[0 for _ in ran..
📕 문제 https://programmers.co.kr/learn/courses/30/lessons/12900 코딩테스트 연습 - 2 x n 타일링 가로 길이가 2이고 세로의 길이가 1인 직사각형모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세로의 길이가 2이고 가로의 길이가 n인 바닥을 가득 채우려고 합니다. 타일을 채울 때는 programmers.co.kr 💡 풀이법 : 열심히 그려보다 보면 의외로 쉽게 규칙을 알 수 있다. -> n = n-1 + n-2 def solution(n): a,b = 1,1 for i in range(n): a,b = b, a+b return a%1000000007
📕 문제 https://programmers.co.kr/learn/courses/30/lessons/72413 코딩테스트 연습 - 합승 택시 요금 6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4 programmers.co.kr 💡 풀이법 1. 노드들 중 어디까지 같이 가다가 서로 갈리는 길을 모르기 ..
📕 문제 https://programmers.co.kr/learn/courses/30/lessons/42628 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr 💡 풀이법 : 최대힙과 최소힙을 두개 만들어서 삽입할 때는 두개 다 넣고, 최대값을 삭제할 때는 최대힙에서 빼고, 최소값을 삭제할 때는 최소힙에서 뺀다. (단, 뺄 때 다른 힙에서는 뺀 원소를 삭제해줘야함) import heapq def solution(operations): answer = [0,0] min_heap = [] max_heap = [] cnt = 0 for o in operations: oper = o.split() if oper[0] == 'I': num = int(oper[-1]) heapq.heappush(m..