본문 바로가기
백준(Baekjoon)

[백준] 1547번: 공 - 자바

by IT 정복가 2022. 4. 4.
728x90

https://www.acmicpc.net/problem/1547

 

1547번: 공

첫째 줄에 컵의 위치를 바꾼 횟수 M이 주어지며, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 컵의 위치를 바꾼 방법 X와 Y가 주어지며, X번 컵과 Y번 컵의 위치를 서로 바꾸는 것

www.acmicpc.net


[문제]

[코드]

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int cup[] = {0,1,0,0};
		int tmp = 0;
		int M = sc.nextInt();
		
		for(int i = 0; i < M; i++) {
			int X = sc.nextInt();
			int Y = sc.nextInt();
			
			tmp = cup[X];
			cup[X] = cup[Y];
			cup[Y] = tmp;
		}
		
		for(int i = 0; i < cup.length; i++) {
			if(cup[i] == 1)
				System.out.println(i);
		}
		sc.close();
	}
}

[설명]

1. 1번부터 3번까지의 컵이 있는데 다른 컵은 비어 있고 1번 컵에만 공이 있기 때문에 배열을 통해 1번 방에만 값을 넣어준다. (0번방은 의미가 없기 때문에 그냥 0을 넣어준다.)

2. 이따가 cup[X]와 cup[Y]의 값을 바꾸기 위해서 tmp라는 변수를 0으로 초기화 해 준다.

3. 컵의 위치를 바꾼 횟수를 알기 위해 M을 입력 받는다.

4. X, Y값을 컵의 위치를 바꾼 횟수 만큼 입력 받아야 하기때문에 for문을 이용해서 입력을 받는다.

5. 입력을 받은 후 tmp에 cup[X]의 값을 저장해 준다.

6. 그 후 cup[X] 방에  cup[Y]의 값을 넣어 준다.

7. cup[Y] 방에는 cup[X]의 값을 저장했던 tmp를 넣어준다.

8. for문을 빠져나와 공이 들어있는 컵의 번호를 알아야 하기 때문에 또 다른 for문을 사용한다.

9. for문은 컵의 길이만큼 돌아야 하며 1이 있으면 그 컵의 번호를 출력해야 하기 때문에 if문으로 안을 처리해 준다. 


[결과]

728x90