본문 바로가기

자바

BOJ 백준 14499번 주사위 굴리기 Java 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지 www.acmicpc.net 이 문제는 지도 위에서 주사위는 동(1), 서(2), 북(3), 남(4) 방향으로 굴릴 때 주사위의 윗면의 수를 출력해야 합니다 가장 중점적으로 봐야할 점은 주사위를 4방향으로 굴릴 때, 각 위치가 어떻게 변하는지입니다. 따라서 저는 0부터 5까지 바닥, 동, 서, 남, 북, 위를 설정하고, 4방향으로 굴릴 때의 위치 변화를 저장하는 배열을 만들었습니다. 가장 먼저 각 명령마다 지도의 범위를 벗어나.. 더보기
BOJ 백준 28069번 김밥천국의 계단 Java 28069번: 김밥천국의 계단 첫 번째 줄에 계단 개수에 해당하는 $N$, 계단을 오르는 횟수 $K$가 주어진다. $(1 \leq N, K \leq 1\,000\,000)$ www.acmicpc.net 김밥천국의 위치인 N와 도달 횟수 K가 주어집니다. 1. 계단 한 칸 올라가기 2. 지팡이를 사용해서 i번째 계단일 때 i + i/2째 계단으로 순간이동 이렇게 2가지 행동 중 하나를 선택해서 K번째 행동에서 N에 도달해야 합니다. 풀이 2번 행동의 특성을 파악하는 것이 중요하다고 생각해서, 42번째 계단까지 10번째에 도달할 수 있는지 파악해보았습니다. 1. 짝수, 3의 배수 i번째 계단에서 1번 혹은 2번 방법으로 도달할 수 있는 계단을 다 나열해보니, 3 이상일 때 규칙이 보였습니다. 2번째 방법을 .. 더보기
[BOJ 백준] 2531번 회전초밥 (Java) 주어진 회전 초밥 벨트에서 먹을 수 있는 초밥의 가짓수의 최댓값을 하나의 정수로 출력한다. 2531번: 회전 초밥 첫 번째 줄에는 회전 초밥 벨트에 놓인 접시의 수 N, 초밥의 가짓수 d, 연속해서 먹는 접시의 수 k, 쿠폰 번호 c가 각각 하나의 빈 칸을 사이에 두고 주어진다. 단, 2 ≤ N ≤ 30,000, 2 ≤ d ≤ 3,000, 2 ≤ www.acmicpc.net 처음에는 List와 Set을 사용해서 풀었지만, 매번 N이 최대 30,000, k가 최대 3,000이기 때문에 시간초과가 났습니다. 해결 방법 1. 슬라이딩 윈도우 크기가 d인 selected라는 정수 배열을 이용합니다. 현재 선택된 초밥의 번호를 인덱스로 하여 개수를 늘립니다. 초기 세팅을 한 후 0부터 N까지 탐색하면서, 윈도우에.. 더보기
[BOJ 백준] 2031번 가스관 (Java) 2931번: 가스관 www.acmicpc.net import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class Main { static class Position { int x; int y; Position(int x, int y) { this.x = x; this.y = y; } } static int R, C, blockCount; static int[] dx = { 1, 0, -1, 0 }, dy = { 0, -1, 0,.. 더보기

반응형