알고리즘 :: 백준 :: 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회 돌리면 만들 수 있습니다.갈 수 있는 모든 국가에 방문표시 및 외부 배열에 좌표를 저장합니다. 이렇게 연합이 만들어지면, 인구 이동을 실시합니다. 모든 점을 검사했는데..
알고리즘 :: 백준 :: 2636 - 치즈
·
Problem Solving
❔문제 🔗문제링크🔄 문제 및 입출력 조건 파악가로, 세로 ≤ 100출력: 치즈가 모두 녹는데 걸리는 시간, 모두 녹기 직전에 남아있던 치즈 칸 개수✏️ 문제풀이시뮬레이션(구현) + DFS/BFS 문제로, 문제가 요구하는대로 그대로 구현하면 됩니다.하지만, 바로 코딩에 들어가지 마시고 순서대로 어떤 절차를 밟을지 간단하게나마 손코딩을 한 후 진행합시다.`while(치즈가 남아있는 동안)` - 전체 칸을 순회하며 치즈가 있는지 확인하는 함수가 필요합니다.`(0, 0)` 공기를 시작점으로 DFS 또는 BFS를 돌려서 치즈를 만나면 '녹았다' 표시를 합니다.`(0, 0)`은 무조건 공기입니다. 문제에 '가장자리에는 치즈가 없다'고 나와있기 때문입니다.이 과정이 끝나면, 공기와 맞닿은 치즈는 '녹았다' 표시가..
알고리즘 :: 백준 :: 10709 - 기상캐스터
·
Problem Solving
❔문제 🔗문제링크🔄 문제 및 입출력 조건 파악1 ≤ 높이 H, 너비 W ≤ 100각 칸마다 `.` 또는 `c` 문자가 들어옴.✏️ 문제풀이간단한 시뮬레이션 구현 문제입니다.구름 위치(좌표)를 입력받은 뒤, 각 구름마다 실제로 이동시키면서 시간을 계산하는 방법.구름은 동쪽으로만 이동하고 외부 유입없다는 점에서 착안, 구름이 있는 칸은 '0', 그 오른쪽부터 한 칸마다 1, 2, 3, 4... 1씩 늘려가며 초기화하기.아무래도 두 번째 방법이 더 쉽고 간단하기 때문에 두 번째 방법을 사용하면 좋을 것 같습니다.읽은 문자가 `c`이면, 카운팅 변수를 0으로 초기화하고 현재 칸을 0으로 초기화.읽은 문자가 `.`이면, 카운팅 변수 1 증가하고, 현재 칸을 카운팅 변수로 초기화.카운팅 변수는 각 행마다 다시 ..