반응형
https://www.acmicpc.net/problem/1547
- 문제
- 문제 풀이
백준 1547번 공은 브론즈 3 난이도의 구현 및 시뮬레이션 문제이다. 이 문제에는 컵이 3개가 있다. 이 컵을 1번 컵, 2번 컵, 그리고 3번 컵이라고 부르겠다. 그리고 처음에 1번 컵 밑에 공을 둔다. 그리고 x, y가 주어지면 x번 컵과 y번 컵의 위치를 바꾼다. 공은 그대로 있는다. 이때 컵을 다 바꿨을 때 공이 몇 번 컵 밑에 있는지를 구하면 된다.
이 문제는 boolean형 배열을 이용해서 풀었다. 배열 사이즈가 4인 boolean형 배열 arr을 선언하고 arr [1]을 true로 초기화시켜준다. 이 뜻은 처음에 1번 컵 밑에 공이 있다는 뜻이다.
그리고 for-loop을 돌려서 N개 x, y를 입력받는다. 그리고 x, y번 컵을 서로 바꿔준다. 이건 boolean형 변수 temp를 이용해서 할 수 있다. 우선 temp = arr [x]로 하고 arr [y] = arr [x], arr [x] = temp로 컵의 위치를 바꿔준다.
그리고 마지막에 for-loop을 돌려 배열에서 어떤 인덱스가 true인지 확인하고 true인 인덱스를 출력한다.
자세한 코드는 밑에서 참고할 수 있다.
- 코드
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));
int m = Integer.parseInt(br.readLine());
boolean[] arr = {false, true, false, false}; //처음 1번 컵에 공이 있다
for (int i = 1; i <= m; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
//x, y번 컵을 바꿔준다
boolean temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
for (int i = 1; i <= 3; i++) {
if (arr[i]) System.out.print(i);
}
}
}
반응형
'백준' 카테고리의 다른 글
[백준] 1076번 : 저항 – JAVA [자바] (0) | 2022.08.08 |
---|---|
[백준] 1075번 : 나누기 – JAVA [자바] (0) | 2022.08.08 |
[백준] 2506번 : 점수계산 – JAVA [자바] (0) | 2022.08.08 |
[백준] 10101번 : 삼각형 외우기 – JAVA [자바] (0) | 2022.08.08 |
[백준] 14645번 : 와이버스 부릉부릉 – JAVA [자바] (0) | 2022.08.08 |
댓글