Simulation(22)
-
[백준 23031] 으어어… 에이쁠 주세요.. [Java]
문제http://boj.ma/23031요약아리와 학생 좀비는 모두 아래 방향을 보고 있다.아리는 가장 왼쪽 위에 위치한다.아리는 벽에 부딪히게 되면 전진하지 못하고 제자리에 머문다.아리는 스위치가 있는 칸에 도착하면 좀비랑 마주치기 전에 스위치를 켠다.아리는 스위치가 켜져 불이 밝혀진 영역에서는 좀비를 만나도 기절하지 않는다.아리는 스위치가 있는 칸에서는 좀비를 만나도 기절하지 않는다.학생 좀비는 벽에 막혀 전진하지 못할 경우 반대 방향으로 회전한다.풀이 과정아이디어우선 학생 좀비의 위치를 파악하자. 만약 학생 좀비가 하나도 없다면 아리는 기절하지 않는다.private static boolean solve(char[] A) { // find Zombie List zombies = new Arr..
2026.01.07 -
[백준 16236] 아기 상어 [Java]
문제http://boj.ma/16236요약초기 아기 상어의 크기는 2이며, 자신과 크기가 동일하거나 작은 물고기는 지나갈 수 있다.자신보다 크기가 작은 물고기만 먹을 수 있다.탐색 종료 조건: 더 이상 먹을 수 있는 물고기가 없는 경우먹을 수 있는 물고기가 2마리 이상일 경우 거리순으로 이동거리가 동일하다면 (1)최상단 (2) 가장 왼쪽을 우선시한다.이동에는 1초가 소모된다.상어의 크기만큼 물고기를 먹으면 상어의 크기가 1 증가한다.풀이 과정아이디어N ≤ 20이므로, BFS로 완전 탐색을 수행하며 다음에 먹을 수 있는 물고기를 찾으면 된다.좌표를 정렬해 비교하는 방식은 실제 상어의 이동 경로를 고려하지 못하므로 적합하지 않다.우선 상어와 물고기에 대한 클래스를 만들어주었다.static class Shar..
2026.01.05 -
[백준 23350] K 물류창고 [Java]
문제http://boj.ma/23350 23350번: K 물류창고 boj.ma 풀이문제 요약우선순위가 낮은 박스들을 무거운 순서대로 놓도록 박스를 돌려보내거나, 나머지 공간에 쌓았다가 다시 쌓는 비용을 계산하자.아이디어레일에 존재하는 박스 중 우선순위가 가장 낮은 박스먼저 쌓아야 한다.가장 낮은 우선순위가 아니라면 뒤로 보내자.현재 처리해야 하는 우선순위의 박스에 대해, 이미 쌓여있는 동일한 우선순위의 박스의 무게와 비교해 무거운 박스가 먼저 쌓이도록 가벼운 박드를 나머지 공간으로 이동 후 쌓아주자.1 ~ M의 우선순위에 대해 박스는 적어도 하나 존재하므로 별도의 예외 검증없이, 우선 순위 빈도만큼 박스를 쌓았다면, 다음 우선 순위는 현재 우선순위 - 1이 된다. private static int mov..
2025.10.12 -
[백준 20165] 인내의 도미노 장인 호석 [Java]
문제http://boj.ma/20165 20165번: 인내의 도미노 장인 호석 boj.ma 풀이문제 요약주어진 보드에서 도미노를 넘어뜨리고 세우고를 반복했을 때, 몇 개의 도미노가 넘어졌었는지 출력하자.아이디어요구 사항을 되짚어보자.도미노를 넘어뜨리려는 위치에 이미 넘어져 있다면 아무 일도 일어나지 않는다.넘어뜨린 도미노의 번호 K에 대해 동일한 방향으로 K - 1개 넘어뜨릴 수 있으며, 이는 다음 도미노에 의해 갱신될 수 있다.넘어뜨린 도미노는 다시 세울 수 있다. 이 때 도미노 번호 K를 다시 복구해야 한다.넘어뜨린 도미노는 음수로 표현했으며, 현재 쓰러트린 도미노의 번호에 의해 쓰러트릴 수 있는 도미노의 최대 길이를 갱신해주면서 시뮬레이션을 반복하면 된다. private static int atta..
2025.09.29 -
[백준 16924] 십자가 찾기 [Java]
문제http://boj.ma/16924 16924번: 십자가 찾기 boj.ma 풀이문제 요약주어진 격자판이, 문제의 규칙대로 만들어지는 십자가에 의해서만 만들어질 수 있는지 알아보자.아이디어격자판의 크기가 작으므로 모든 위치에 대해 십자가가 만들어질 수 있는지 전부 확인하면 된다. 단 문제의 규칙대로만 만들어지는 십자가에 의해서만 만들어지는 경우에만 방문 표시를 해주자.모든 위치에 대한 확인이 끝난 후 ‘*’인데 방문 표시가 안되었다면 십자가만을 이용해서 격자판을 만들 수 없는 경우로 -1을 출력하자.필요한 십자가의 수가 0일 수 있으니, ‘*’이 존재하지 않는다면 0을 출력해야 한다. private static int isCross(int x, int y, int size) { for..
2025.09.04 -
[백준 16567] 바이너리 왕국[Java]
문제http://boj.ma/16567 16567번: 바이너리 왕국 boj.ma 풀이문제 요약길이가 N인 타일을 깨끗하게 하기 위해, M번의 시련에서 flip 최소 횟수를 빠르게 구하자.아이디어N, M이 최대 1e6이므로 완전 탐색은 시간 초과가 발생한다. i번째 칸을 더럽히는 시련에 대해 flip의 최소 횟수를 빠르게 구해야 한다.한 번의 flip은 연속된 타일을 청소할 수 있으므로, i번째 칸을 더럽힐 때 양 옆이 더럽혀진 적 없다면 새로운 flip이 된다. 만약 한 칸이라도 더럽혀져 있다면 기존에 계산한 한 번의 flip으로 청소할 수 있다.주어진 타일이 더럽혀진 경우에도 미리 flip을 계산해야 한다. 현재 타일을 기준으로 이전 타일의 더럽혀진 유무에 따라 최소 flip 횟수를 증가시키자. ..
2025.08.29 -
[백준 08911] 거북이 [Java]
문제http://boj.ma/8911 8911번: 거북이 boj.ma 풀이문제 요약거북이가 이동한 영역을 감싸는 가장 작은 직사각형의 면적을 구하자.아이디어주어진 명령대로 거북이를 이동시켜 가장 큰/작은 x, y값을 기록한 후 두 차를 통해 최소 직사각형의 면적을 구할 수 있다. for (char command : commands) { switch (command) { case 'F': x += dx[dir]; y += dy[dir]; break; case 'B': ..
2025.08.28 -
[백준 30679] 별 가두기 [Java]
문제http://boj.ma/30679 30679번: 별 가두기 boj.ma 풀이문제 요약첫 번째 열에서 오른쪽으로 진입했을 때, 격자 밖으로 별이 나오지 않고, 무한하게 이동할 수 있는지 판단해야 한다.아이디어별이 이동 중 이미 방문한 곳에 도착했다 하더라도, 무한하게 이동할 수 있는지는 보증할 수 없다. 이미 방문한 곳의 좌표와, 방문할 때의 진입 방향이 모두 같아야 무한하게 이동하고 있음을 판단할 수 있다. private static boolean dfs(int x, int y, int d, boolean[][][] visited) { if (isValid(x, y)) { if (!visited[x][y][d]) { visited[x]..
2025.08.12 -
[백준 05587] 카드 캡터 상근이 [Java]
문제http://boj.ma/5587 5587번: 카드 캡터 상근이 boj.ma 풀이문제 요약상근이와 근상이가 번갈아가며 가지고 있는 가장 작으면서도, 상대방보다 큰 카드를 내며 모든 카드를 다 내는 게임을 시뮬레이션 해야 한다.아이디어카드들을 TreeSet에 담고, 차례에 관계없이 마지막으로 낸 카드를 기준으로 작은 카드를 내야 하는 것에 유의하며 구현하면 된다. // Solve int prevCard = -1; boolean sangTurn = true; while (!sang.isEmpty() && !geun.isEmpty()) { if (sangTurn) { Integer sangCurCard = sa..
2025.08.05 -
[백준 15702] 중간고사 채점 [Java]
문제15702번: 중간고사 채점 풀이문제 요약서로 다른 점수의 N문제를 응시한 M명에 대해 가장 높은 점수를 획득한 사람의 점수와 번호를 출력하자.아이디어M명의 문제 풀이 여부에 따라 점수를 합하고, 이전의 최대 점수보다 크다면 점수와 번호를 갱신하자. 만약 이전의 최대 점수와 동일하고, 번호가 작다면 번호만 갱신하자. // Solve int sum = 0; for (int j = 0; j maxScore || (sum == maxScore && no 풀이시간10분소스코드https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/practice/15702.java p..
2025.07.10