728x90
반응형
2024.07.20기준 - 브론즈2
백준, BEAKJOON, BOJ, JAVA, 자바
풀이
이 문제는 박스를 밀어서 골인 지점에 몇 번만에 갈 수 있는지를 출력하는 문제입니다.
1. 먼저 로봇과 박스, 목표 지점의 인덱스를 구했습니다.
int robot = 0; // 로봇의 인덱스
int box = 0; // 박스의 인덱스
int goal = 0; // 목표 지점 인덱스
for (int i = 0; i < 10; i++) {
if (arr[i] == '@') {
robot = i;
} else if (arr[i] == '#') {
box = i;
} else if (arr[i] == '!') {
goal = i;
}
}
2. 그런 뒤 목표 지점에 도달 할 수 없는 경우를 제외하고 갈 수 있다면 출력을 해주었습니다.
int count = 0;
if (robot < box && goal < box) { // 박스를 오른쪽으로 밀 때, 목표 지점이 왼쪽이라면
count = -1;
} else if (robot > box && goal > box) { // 박스를 왼쪽으로 밀 때, 목표 지점이 오른쪽이라면
count = -1;
} else { // 박스를 목표 지점까지 갈 수 있다면
count = Math.abs(robot - goal) - 1;
}
코드
package Main;
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
char[] arr = br.readLine().toCharArray(); // 창고의 상태
int robot = 0; // 로봇의 인덱스
int box = 0; // 박스의 인덱스
int goal = 0; // 목표 지점 인덱스
for (int i = 0; i < 10; i++) {
if (arr[i] == '@') {
robot = i;
} else if (arr[i] == '#') {
box = i;
} else if (arr[i] == '!') {
goal = i;
}
}
int count = 0;
if (robot < box && goal < box) { // 박스를 오른쪽으로 밀 때, 목표 지점이 왼쪽이라면
count = -1;
} else if (robot > box && goal > box) { // 박스를 왼쪽으로 밀 때, 목표 지점이 오른쪽이라면
count = -1;
} else { // 박스를 목표 지점까지 갈 수 있다면
count = Math.abs(robot - goal) - 1;
}
bw.write(Integer.toString(count));
bw.flush();
bw.close();
br.close();
}
}
728x90
반응형
'코딩테스트 일기 (BAEKJOON)' 카테고리의 다른 글
BAEKJOON / 백준 - JAVA 30804번 과일 탕후루 (0) | 2024.07.22 |
---|---|
BAEKJOON / 백준 - JAVA 31868번 수박 게임 (0) | 2024.07.21 |
BAEKJOON / 백준 - JAVA 31867번 홀짝홀짝 (0) | 2024.07.19 |
BAEKJOON / 백준 - JAVA 26043번 식당 메뉴 (0) | 2024.07.18 |
BAEKJOON / 백준 - JAVA 31066번 비 오는 날 (0) | 2024.07.17 |