공부하고 기록하는, 경제학과 출신 개발자의 노트

프로그래머스 86

[Python] 프로그래머스. 게임 맵 최단거리 (Level 4)

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 프로그래머스 Level 4에 해당하지만, 단순 BFS로 충분히 해결할 수 있는 유형이다. BFS의 전형적인 문제형태. BFS로 맵을 순회하다가 목표지점인 오른쪽 하단에 도착하면 그곳까지 도달하는 데 걸린 횟수를 count하면 된다.

[Python] 프로그래머스. 짝지어 제거하기 (Level 3)

https://programmers.co.kr/learn/courses/30/lessons/12973 코딩테스트 연습 - 짝지어 제거하기 | 프로그래머스 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다. 예를 들 programmers.co.kr 문자열 파싱으로 작업하면, 1,000,000이라는 문자열 길이 때문..

[Python] 프로그래머스. 가장 먼 노드 (Level 3)

https://programmers.co.kr/learn/courses/30/lessons/49189 코딩테스트 연습 - 가장 먼 노드 | 프로그래머스 6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3 programmers.co.kr 주어진 노드를 토대로 n * n Matrix를 생성할 경우 시간초과가 걸리는 문제. BFS 코드의 효율성보다는 주어진 노드 데이터를 적은 연산비용이 들어가도록 하는 게 관건이었던... 시간초과가 뜨던 코드는 아래와 같았다. from collections import deque, defaultdict def bfs(start, maps, visited): queue = deque() queue.append((start..

[Python] 프로그래머스. 2018 카카오 Recruit - 추석 트래픽

https://programmers.co.kr/learn/courses/30/lessons/17676 코딩테스트 연습 - [1차] 추석 트래픽 | 프로그래머스 입력: [ 2016-09-15 20:59:57.421 0.351s, 2016-09-15 20:59:58.233 1.181s, 2016-09-15 20:59:58.299 0.8s, 2016-09-15 20:59:58.688 1.041s, 2016-09-15 20:59:59.591 1.412s, 2016-09-15 21:00:00.464 1.466s, 2016-09-15 21:00:00.741 1.581s, 2016-09-15 21:00:00.748 2.31 programmers.co.kr datetime 라이브러리를 써본 적은 없어서 찾아보면서 작업..

[Python] 프로그래머스. 숫자 게임 (Level 3)

1. A팀의 최댓값이 B팀의 최댓값보다 크다 = B가 무엇을 내놓아도 이길 수 없다. 포기한다. 2. A팀의 최댓값보다 B팀의 최댓값이 크다 = 이길 수 있다. A팀을 최댓값 -> 최솟값 순서로 정렬하고, B의 최댓값을 빠르게 구할 수 있도록 heapq 라이브러리를 사용한다. import heapq def solution(A, B): # A의 최솟값이 B의 최댓값보다 크면, 이길 방법이 없으므로 0 if min(A) > max(B): return 0 # 최댓값 -> 최솟값 순으로 정렬 A.sort(reverse = True) # 맨 앞에 B의 최댓값이 위치하도록 heapq 자료구조를 사용한다. B = [-i for i in B] heapq.heapify(B) count = 0 for a in A: # 이..