Algorithm/Simulation6 BOJ G1 2933 미네랄 JAVA 2933번: 미네랄 창영과 상근은 한 동굴을 놓고 소유권을 주장하고 있다. 두 사람은 막대기를 서로에게 던지는 방법을 이용해 누구의 소유인지를 결정하기로 했다. 싸움은 동굴에서 벌어진다. 동굴에는 미네랄 www.acmicpc.net 문제 읽기 이 문제는 처음 읽었을 때 시뮬레이션 문제인 것 같았다. R, C, N의 값도 그리 크지 않고 시뮬레이션을 했을 때 말고는.. 딱히 답을 구할 방법이 생각나진 않았다. 그래서 다음과 같이 초기 계획을 세웠다. 거의 이 계획대로 코드를 작성했다. (빨간색으로 N-1행이라 되어있는데 R-1행이다. 오타이다.) 문제 풀기 문제 풀이 과정을 다시 한 번 정리해보겠다. 우선 문제를 풀 때 특별한 알고리즘은 사용하지 않았고, BFS와 Queue, 그리고 작은 꼼수(?)가 필요.. 2024. 1. 17. BOJ G2 19236 청소년 상어 JAVA 19236번: 청소년 상어 첫째 줄부터 4개의 줄에 각 칸의 들어있는 물고기의 정보가 1번 행부터 순서대로 주어진다. 물고기의 정보는 두 정수 ai, bi로 이루어져 있고, ai는 물고기의 번호, bi는 방향을 의미한다. 방향 bi는 www.acmicpc.net 문제 읽기 문제를 읽으면서 다음과 같이 적어보았다. 기본은 시뮬레이션 문제이지만, dfs 개념도 필요한 문제이다. 0. 상어가 (0,0)에 들어옴(초기 상태 설정) 1. 물고기 작은 수부터 전부 한 칸씩 이동 (빈 칸 또는 물고기 칸만 가능. 45도 반 시계 회전.) 2. 상어 이동. 해당 방향대로 물고기가 있는 칸으로만 가능. (모든 경우의 수를 생각해서 dfs) => 상어의 이동 경로가 여러가지이기 때문에 반복문이 아닌 dfs로 수행하자. 그.. 2023. 7. 15. BOJ G5 20055 컨베이어 벨트 위의 로봇 JAVA 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net 문제를 한 번 읽고 자료구조를 뭘 쓰면 좋을 지 고민했다. 컨베이어 벨트는 고정된 2N 길이이기 때문에 배열에 담고, 벨트가 회전하는 것은 직접적으로 계속 배열의 값을 돌리는 게 아니라 컨베이어 벨트의 시작 인덱스와 끝 인덱스를 담아놓고 조작하는 방식이 더 효율적일 것이라 생각했다. 그리고 로봇의 경우에는 제한 없이, 종료 조건을 만족하기 전까지는 무한정으로 추가가 가능하기 때문에 Queue를 쓸까 하다가, 회전(이동)하는 동작(수정), 추가.. 2023. 7. 15. BOJ G5 21610 마법사 상어와 비바라기 JAVA 21610번: 마법사 상어와 비바라기 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기 www.acmicpc.net 문제 읽기 r, c가 1부터 시작한다는 점, d도 1~8 까지라는 점, 등만 유의하면 설명대로 구현하면 되는 문제이다. 실수한 부분 인덱스 1부터 인덱스 1부터 시작하는 게 많아서 입력 받은 후에 -1을 한 후 대입해서 시작했다. 그러다보니 s에도 -1을 해버려서.. 잠깐 틀렸는데 다시 보고 내니 맞았당! 코드 package ps.ㄱSolving; import java.io.BufferedReader; import java.io.IOException; im.. 2023. 7. 15. 이전 1 2 다음