https://www.acmicpc.net/problem/11000 11000번: 강의실 배정첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si www.acmicpc.net두개의 우선순위 큐를 이용해 풀었다. 첫번째 우선순위 큐는 배치할 수업의 우선순위. 시작 시간이 가장 빠른 수업이 높은 우선순위를 가지고, 시작시간이 같은 경우 끝나는 시간 - 시작시간으로 수업의 길이가 가장 짧은 수업이 높은 우선순위를 가지게 한다. 두번쨰는 배치할 강의실의 우선순위.배치할 강의의 우선순위는 끝나는 시간이 가장 짧은 강의실이 높은 우선순위를 가진다. 만약 peek를 한 강의실의 끝나는 시간이 배치할 수업보다 더 늦는다면, answer에 +1을 한 후 ..
https://www.acmicpc.net/problem/14235 14235번: 크리스마스 선물 크리스마스에는 산타가 착한 아이들에게 선물을 나눠준다. 올해도 산타는 선물을 나눠주기 위해 많은 노력을 하고 있는데, 전세계를 돌아댕기며 착한 아이들에게 선물을 나눠줄 것이다. 하지만 www.acmicpc.net 항상 swift로 코테 풀때마다 느끼지만.. 자료구조좀 지원해 줬으면 한다... 솔직히 코테때 이걸 구현하는데 시간 쓸듯... 우선순위 큐만 구현하면 쉽게 풀수 있는 문제여서 따로 설명은 안하겠다. import Foundation let n = Int(readLine()!)! struct Heap { private var elements: [T] private var sortFunction: (T,..
https://www.acmicpc.net/problem/17143 17143번: 낚시왕 낚시왕이 상어 낚시를 하는 곳은 크기가 R×C인 격자판으로 나타낼 수 있다. 격자판의 각 칸은 (r, c)로 나타낼 수 있다. r은 행, c는 열이고, (R, C)는 아래 그림에서 가장 오른쪽 아래에 있는 칸이다. www.acmicpc.net 낚시 할때 원본 배열에다가 바로바로 적용하지 말고 초기화된 배열에다가 상어의 위치를 배치 한 후, 원본 배열에다가 적용할 것. 만약 원본 배열에다가 상어의 위치를 바로 배치할 시 다음과 같은 문제가 발생할 수 있다. 이런식으로 상어가 배치 되어 있을때, 빨간색 상어를 가장 먼저 이동시킨다고 가정해보면 그림과같이 푸른 상어는 아직 이동하지도 않았는데, 빨간색 상어가 이동해서 푸른..
https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 문제를 잘읽자!! 아기 상어는 자신의 크기보다 큰 물고기가 있는 칸은 지나갈 수 없고, 나머지는 모두 지나갈 수 있다. 상어는 자신의 크기보다 작은 물고기만 먹을 수 있다. 상어의 시작 크기는 2이다. 문제를 잘 안읽어서 시간만 30분 넘게 잡아먹었다. 문제를 반드시 자세히 읽자. 상어는 가장 가까운 물고기를 우선순위에 둔다. 이때, 가장 가까운 물고기가 여럿 있을 경우 가장 위에 있는 물..
https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net dfs를 사용해서 그룹으로 묶은 후 그룹의 평균값 구해서 다시 배열에 삽입. 만약 리턴된 그룹의 count 값이 1개보다 커야지만 그룹 배열에 그룹을 추가. for문을 다 돈후 그룹 배열의 count가 0이면은 더이상 인구를 나눌 수 없으므로 break하게 했다. 날짜수 카운트는 인구가 다 이동하고 난 후 카운트가 되도록 하는 것이 문제 조건이므로 이를 유의해야 함. import F..
https://www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net 고민한 부분 컨베이어 벨트를 회전시키는 부분에서 고민이 좀 있었다. 처음에는 2차원 배열로 요소들을 한칸씩 이동 시키는 방식을 생각했지만, 컨베이어 벨트를 잘라서 펼치면 결국엔 한줄이 되고 양 끝이 서로 이어져 있으므로 기존 컨베이어 벨트 배열이 1 2 3 4 5 6 이면 removelast와 insert로 마지막 요소를 배열의 첫번째에 넣어주면 2 3 4 5 6 1 이렇게 ..