본문 바로가기

PS/BOJ763

백준 1655 자바 - 가운데를 말해요 (BOJ 1655 Java) https://www.acmicpc.net/problem/1655 발상이 쉽지 않았다. 시간제한도 짧아서 어떻게 구현할지 좀 막막했음. 일단 0.1초같이 극악한 제한시간이 있는 문제들의 경우 자바로는 아예 통과가 불가한 문제들도 있다. 그래서 일단 채점 현황에 자바로 AC 받은게 있나부터 확인했는데 있어서 자바로 도전함 ㅋㅋ 힙을 배열로 어떻게 잘 만들면 O(NlogN)으로 집어넣으면서 바로바로 정렬되고 중간값을 O(1)로 찾을 수 있지 않을까 싶기도 했지만 딱히 구현방식이 생각나지 않았음. 그렇다고 ArrayList에 집어넣고 매번 정렬하는건 당연히 시간초과 날꺼고.. 그다음으로는 이분탐색쪽을 생각해봤으나 역시 구현할 방법이 딱히 떠오르지 않았음. 그러던 중 보통 이런식으로 2부위나 절반씩 나눠 생각하.. 2021. 9. 28.
백준 2157 자바 - 여행 (BOJ 2157 Java) https://www.acmicpc.net/problem/2157 입력 받으면서 서쪽에서 동쪽으로 이동하는 경우는 제외해줬다. (a가 b보다 큰 경우) 동일 노선에 기내식이 별로인 경우도 제외해줌. 처음엔 무지성 Brute Force로 일단 갈겨봤으나 당연히 시간초과났음. ㅠ 다익스트라나 floyd-washall 같은걸로는 m회 이하를 체크하기 힘들꺼라 일단 제외함. 다행히 한방향으로만 진행하면 되므로 그냥 dp 돌리기로 결정함. dp 배열 설정은 dp[i][j] - i:도시번호, j:이동횟수, value:i도시번호까지 j이동횟수로 얻은 최대 기내식 점수 처럼 해줬음. 그럼 이제 dp[1][1] = 0; 을 베이스로 두고 (1번에서 출발했고, 1번도 방문한 도시에 포함되니 [1][1]이 됨. 기내식은 아.. 2021. 9. 26.
백준 2452 자바 - 그리드 게임 (BOJ 2452 Java) https://www.acmicpc.net/problem/2452 어려웠음.. 2일이나 걸렸음.. 기본적인 로직은 아래와 같이 잡음 1. 각 구간은 어차피 동시에 움직이므로 동일 색상으로 된 구간 전체를 하나로 생각함 2. 그러면 배열 전체에 대한 bfs에서, 그래프에 대한 bfs로 압축시킬 수 있음. bfs로 생각한 이유는 결국 각 구역별로 색상이 변하는거니 한칸만 잡고 계속 변경한다고 보면 결국 가장 먼 구역까지의 bfs라고 생각했음. 즉, 구역을 나누고 각 구역별로 모든 지역까지 bfs를 때린다음 그 횟수가 가장 적은게 답이라 생각함. 즉, 3 3 1 0 0 1 0 0 0 1 1 이러한 입력에 대해 구간을 나눠서 숫자를 붙임. (이게 필요할꺼라 생각해서 한건데 하고보니 이게 flood fill 인듯.. 2021. 9. 22.