https://www.acmicpc.net/problem/2170 2170번: 선 긋기첫째 줄에 선을 그은 횟수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 다음 N개의 줄에는 선을 그을 때 선택한 두 점의 위치 x, y (-1,000,000,000 ≤ x www.acmicpc.net그리디 문제이다.x좌표를 기준으로 오름차순으로 정렬한다.첫번째 x좌표와 y좌표를 기록한다.2번째 x좌표가 첫번째 y좌표보다 앞에있다면 2번째와 첫번째 y좌표를 비교해서 더 큰 값으로 y좌표를 기록한다.(여기서 x좌표는 정렬되어 있기 때문에 2번째 x좌표가 첫번째 x좌표보다 앞에 있을 수가 없다.)2번째 x좌표가 첫번째 y좌표보다 뒤에 있다면 첫번째 x좌표와 y좌표의 차를 구해서 output에 더해준다.(길이를 더해준..
https://www.acmicpc.net/problem/1744 1744번: 수 묶기길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에www.acmicpc.net그리디 문제이다. 입력받은 숫자들을 오름차순으로 정렬해준다.양수 숫자들은 큰수부터 2개씩 곱해서 더해준다. 1*1 보다 1+1이 더 큰 수라는 것에 유의한다.양수가 하나남으면 그냥 더해주면 된다.음수 숫자들은 작은수부터 2개씩 곱해서 더해준다.음수가 하나남고 0도 남았을 경우 서로 곱해서 더해준다.0이 안남고 음수가 하나 남았으면 그냥 더해주면 된다.위 사진의 계산식은 문제 해설에 적은 방법들을 예제..
https://www.acmicpc.net/problem/11000 11000번: 강의실 배정첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si www.acmicpc.net그리디 문제이다. 우선 수업을 시작하는 시간을 기준으로 오름차순 정렬해준다. 그후 우선순위큐를 만들어 주고 종료시간을 넣어주며 수업 시작시간을 순서대로 비교하면 된다. 마지막으로 출력은 heapq안에 남아있는 것들의 개수를 출력해주면 된다.우선순위큐는 파이썬 내장함수인 heapq를 사용했다.자세한것은 예시를 들어서 설명하겠다.위에보이는 강의 예시를 입력값으로 하겠다.예시의 경우 위에 보이는 사진처럼 3개의 강의실만 사용해서 모든 수업을 할 수 있다.그렇다면 알고리즘 적..
https://www.acmicpc.net/problem/2457 2457번: 공주님의 정원첫째 줄에는 꽃들의 총 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 각 꽃이 피는 날짜와 지는 날짜가 주어진다. 하나의 날짜는 월과 일을 나타내는 두 숫자로 표현된다. 예를 들어서,www.acmicpc.net 그리디 문제이다. 문제자체는 간단하다 꽃이 피는 날자를 인덱스로 지는 날자를 저장할 배열을 만든다.처음 1월 1일부터 3월 1일안에 꽃이 피는 날자가 있는 꽃중 지는 날자가 가장 먼 꽃을 선택한다. 이유는 가장 먼 시간까지 살아있는 꽃이 더 많은 선택지를 줘서 원하는 값(목표)에 더 빠르게 접근할 수 있을테니 최소 개수를 출력하기 좋은 조건이 된다.이제 2에서 선택한 꽃이 피는 날..
https://www.acmicpc.net/problem/3055 3055번: 탈출사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제www.acmicpc.netBFS 문제이다. 고려해야할 점이 2가지가 있다. 고슴도치도 이동하고 물도 이동하기때문에 이 둘을 같이 이동시킨다.고슴도치는 물이 차오르는 곳에 갈 수 없기 때문에 물을 먼저 이동시킨다. 이러면 물이 차오를 곳에 물이 들어가 있어서 고슴도치가 그곳으로 갈 수 없는 효과를 낸다.이제 고슴도치가 방문했던 곳을 다시 방문하지 않고, 물이 있는 곳을 방문하지 않기 위해서 표시를 하면서 이동하면 된다.고슴도치가 이동한 곳들..
https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로www.acmicpc.netBFS 너비우선 탐색 문제입니다. 이 문제는 고려해야할 것들이 좀 있습니다.벽을 부수고 이동하는 중인지 벽을 부수지 않고 이동하는 중인지 알수 있도록 기록해야 합니다.방문한 지점을 다시 방문하지 않기위해 방문한 지점을 기록해야 합니다.1,2과 연결되는데 벽을 부수지 않고 이동할때 벽을 부수고 이동하는 지점을 다시 방문할 수 있습니다. 이렇게 하지 않을시 나중에 벽을 뚫지 못해서..