📚 문제 5427번: 불 상근이는 빈 공간과 벽으로 이루어진 건물에 갇혀있다. 건물의 일부에는 불이 났고, 상근이는 출구를 향해 뛰고 있다. 매 초마다, 불은 동서남북 방향으로 인접한 빈 공간으로 퍼져나간다. 벽에 www.acmicpc.net 🔍 아이디어 bfs로 해결하였습니다. 한 타임에는 불이 퍼지는 경우와 내가 이동하는 경우를 모두 생각해야했습니다. 또한 이번 타임에 불이 옮겨지는곳에는 자신이 이동하면 안된다는 조건이있습니다. 저의 경우 불이 옮겨 붙어지는 경우를 모두 계산한 후에 이동하지 않고 이동할 수 있는 모든 경우를 이동한 후에, 불이 이동하도록 하였습니다. 이렇게 한 후 다음턴에 자신의 위치가 불로 변한 경우 해당 칸은 이전에 갈 수 없던 칸이었는데 이동한것으로 하여 무시하는 방식으로 진행..
📚 문제 https://www.acmicpc.net/problem/2531 2531번: 회전 초밥 첫 번째 줄에는 회전 초밥 벨트에 놓인 접시의 수 N, 초밥의 가짓수 d, 연속해서 먹는 접시의 수 k, 쿠폰 번호 c가 각각 하나의 빈 칸을 사이에 두고 주어진다. 단, 2 ≤ N ≤ 30,000, 2 ≤ d ≤ 3,000, 2 ≤ www.acmicpc.net 🔍 아이디어 완탐으로 i번째 에서 연속해서 먹을 수 있는 만큼 (i+k)만큼을 모두 확인하는 방식으로 풀어도 통과합니다. 저는 슬라이딩 윈도우 방법을 이용해서 풀었습니다 시작 시에 해시에 초기에 k만큼의 접시와, 쿠폰을 이용해 먹은 초밥을 미리 넣어둡니다. 저의 경우 이때 hashmap을 사용하여 먹은 스시를 셌는데 bucket을 이용한 풀이도 가능..
📚 문제 https://www.acmicpc.net/problem/2230 2230번: 수 고르기 N개의 정수로 이루어진 수열 A[1], A[2], …, A[N]이 있다. 이 수열에서 두 수를 골랐을 때(같은 수일 수도 있다), 그 차이가 M 이상이면서 제일 작은 경우를 구하는 프로그램을 작성하시오. 예를 들어 www.acmicpc.net 🔍 아이디어 투 포인터를 활용하여 해결하였습니다. 정렬 이후에 만약 최단 값 범위 보다 작다면 right를 오른쪽으로 옮겨서 두 수의 차이를 벌리고 만약 최단 값 범위보다 크다면 기존의 diffMin값과 비교하여 더 작은값을 가지도록 생긴하고 두 수의 차이를 줄이기 위해 left를 한칸 오른쪽으로 옮겼습니다. 해당 방법 풀이를 시간을 비교해보니 속도가 다른 분들보다 조..