우선순위큐 4

19237번 - 어른 상어

문제 19237번: 어른 상어 (acmicpc.net) 19237번: 어른 상어 첫 줄에는 N, M, k가 주어진다. (2 ≤ N ≤ 20, 2 ≤ M ≤ N2, 1 ≤ k ≤ 1,000) 그 다음 줄부터 N개의 줄에 걸쳐 격자의 모습이 주어진다. 0은 빈칸이고, 0이 아닌 수 x는 x번 상어가 들어있는 칸을 의미 www.acmicpc.net 풀이 1 상어가 매번 이동할 때 마다 "냄새 값"이 1씩 줄어드는데, 어렵게 생각할 필요 없이, 매 초마다 모든 냄새 값을 1씩 빼준 뒤 상어가 위치하는 곳에 냄새 값을 K로 갱신해주면 된다. while 문 안에 들어가는 로직만 잘 설계하면 생각보다 어렵지는 않은 문제이다. import heapq # 북,남,서,동 dRow = [-1,1,0,0] dCol = [0,..

PS/백준 2022.09.27

19238번 - 스타트 택시

문제 19238번: 스타트 택시 (acmicpc.net) 19238번: 스타트 택시 첫 줄에 N, M, 그리고 초기 연료의 양이 주어진다. (2 ≤ N ≤ 20, 1 ≤ M ≤ N2, 1 ≤ 초기 연료 ≤ 500,000) 연료는 무한히 많이 담을 수 있기 때문에, 초기 연료의 양을 넘어서 충전될 수도 있다. 다 www.acmicpc.net 풀이 1 문제에는 명시되어 있지 않지만, 각 손님의 출발지점은 다르지만 도착지점은 같을 수 있다. 처음에는 각 손님에 대해서 거리를 구해 heapq에 넣었지만, 시간초과가 발생한다. 택시의 위치부터 보드 전체를 탐색하며 남아있는 손님을 탐색하면 시간초과가 발생하지 않는다. 여러 제한 조건들을 유의해서 풀이해야하는 문제이다. from collections import d..

PS/백준 2022.09.25

16236번 - 아기 상어

문제 16236번: 아기 상어 (acmicpc.net) 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 풀이 1 총 두가지 방법으로 시도했다. 첫 번째는 미리 먹잇감들의 좌표들을 집합안에 넣어놓고 아기상어가 잡아먹을 때 마다 해당 좌표를 집합에서 제거하는 방식이고, 두 번째는 매번 남아 있는 먹잇감을 전부 탐색하는 방식이다. 결과 부터 말하자면 두 번째 방식이 훨씬 적은 실행속도를 보여줬는데, 그 이유는 보드 위에 빈칸(0) 이 압도적으로 많지 않은 이상 미리 집합안에 좌표를 넣어놓나 매번 탐색하나 탐색..

PS/백준 2022.08.25

디스크 컨트롤러 (lv3)

문제 코딩테스트 연습 - 디스크 컨트롤러 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 매 순간마다 현재 디스크가 유휴 상태인지, 아닌지 확인한 뒤, 유휴 상태라면 앞 순서의 요청부터 처리하고 아니라면 가장 작업 시간이 적게 소요되는 요청을 먼저 처리하도록 하는 문제이다. 매번 시간이 갱신 될 때마다, 현재 작업 중인 요청의 완료 시간보다 앞서 요청된 작업들은 대기열에 넣어놓는다. 만약 대기열이 비어있으면, 더이상 현재 시간까지는 아직 요청된 작업이 없다는 뜻이니 새로운 요청을 받아 수행한다...