알고리즘 :: 백준 :: 4179 - 불!
·
Problem Solving
❔문제 🔗문제링크🔄 문제 및 입출력 조건 파악행 R, 열 C (1 ≤ R, C ≤ 1000)지훈이 위치는 오직 1개탈출할 수있다면 탈출까지 걸린 최소시간없다면 "IMPOSSIBLE" 출력✏️ 문제풀이동시성 구현이 문제에서 가장 까다로운건 '동시성'을 어떻게 해결할지에 대한 고민입니다. 불과 지훈이는 동시에 이동하기 때문입니다.기존 BFS를 돌릴 때, 우리는 큐가 빌 때까지 돌리기 위해 `while(!q.empty())`를 관용구 처럼 사용했습니다.하지만, 이번에는 다릅니다. 현재 시간에 큐에 들어있는 요소들을 처리하는 동안 다음 시간에 이동할 예정인 칸들이 큐에 들어오기 때문입니다. 이것들은 '지금' 처리하면 안 되겠지요.이러한 문제에서 '지금', '현재' 큐에 들어있는 요소만 처리하기 위해서 for..
알고리즘 :: 백준 :: 16234 - 인구 이동
·
Problem Solving
❔문제 🔗문제링크🔄 문제 및 입출력 조건 파악땅 크기 N×N (1 ≤ N ≤ 50)L ≤ 인구 차이 ≤ R (1 ≤ L ≤ R ≤ 100)✏️ 문제풀이문제에 인구 이동 로직이 나와있기 때문에 그대로 실수없이 구현하면 되는 문제입니다.인구 이동 과정은 ① 연합 만들기 - ② 인구 이동 - ③ 인구 이동 ? 시간 증가 : 종료 후 정답 출력으로 요약할 수 있습니다. 코드로 간략하게 나타내면 다음과 같습니다.while (true) { // 1. 연합 만들기 for (int y = 0; y  연합은 임의의 시작점을 기점으로 DFS를 1회 돌리면 만들 수 있습니다.갈 수 있는 모든 국가에 방문표시 및 외부 배열에 좌표를 저장합니다. 이렇게 연합이 만들어지면, 인구 이동을 실시합니다. 모든 점을 검사했는데..
알고리즘 :: 백준 :: 15686 - 치킨 배달
·
Problem Solving
❔문제 🔗문제링크🔄 문제 및 입출력 조건 파악크기가 N×N인 도시, N(2 ≤ N ≤ 50)최대 치킨집 개수 M(1 ≤ M ≤ 13)집의 개수 ≤ 2NM ≤ 치킨집의 개수 ≤ 13도시의 치킨 거리의 최솟값✏️ 문제풀이우선, 문제를 bruteforce로 풀 수 있는지 확인하기 위해, 최악의 경우 몇 번 연산이 필요한지 생각해봅시다.N이 50이고, 총 치킨집이 13개 있으며, 여기서 6개 (또는 7개)를 뽑는 경우라고 생각합시다.치킨집을 뽑는 총 경우의 수는 $_13C_6 = 1,716$입니다.각 경우의 수마다 최대 100개의 집에 대해 치킨거리를 검사합니다.∴ 충분히 시간제한 1초 내로 문제를 풀 수 있다고 판단됐으니, 바로 로직을 생각하러 넘어갑시다.A개 중에서 B개를 뽑는 조합 (combinatio..