문제
세준이는 컵 3개를 탁자 위에 일렬로 엎어놓았다. 컵의 번호는 맨 왼쪽 컵부터 순서대로 1번, 2번 3번이고, 세준이는 이 컵을 이용해서 게임을 하려고 한다.
먼저 1번 컵의 아래에 공을 하나 넣는다. 세준이는 두 컵을 고른 다음, 그 위치를 맞바꾸려고 한다. 예를 들어, 고른 컵이 1번과 2번이라면, 1번 컵이 있던 위치에 2번 컵을 이동시키고, 동시에 2번 컵이 있던 위치에 1번 컵을 이동시켜야 한다. 이때 공은 움직이지 않기 때문에, 공의 위치는 맨 처음 1번 컵이 있던 위치와 같다.
세준이는 컵의 위치를 총 M번 바꿀 것이며, 컵의 위치를 바꾼 방법이 입력으로 주어진다. 위치를 M번 바꾼 이후에 공이 들어있는 컵의 번호를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 컵의 위치를 바꾼 횟수 M이 주어지며, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 컵의 위치를 바꾼 방법 X와 Y가 주어지며, X번 컵과 Y번 컵의 위치를 서로 바꾸는 것을 의미한다. X와 Y의 값은 3보다 작거나 같고, X와 Y가 같을 수도 있다.
컵을 이동시킨 후에 공이 컵 바깥에 있는 경우는 없다.
출력
첫째 줄에 공이 들어있는 컵의 번호를 출력한다. 공이 사라져서 컵 밑에 없는 경우에는 -1을 출력한다.
실버문제를 풀다가 머리가 아파와서
쉬운 문제를 골라 풀어보기로 했다.
3개의 컵이 있고 1번 컵에 공을 하나 넣었다고 한다.
그리고 두 컵을 고르고 위치를 바꾼다.
컵의 위치는 총 M번 바꿀 것이며 그 이후에는 X번째, Y번째 컵의 위치를 바꾼다.
1. 3개의 컵을 하나의 배열에 저장한다.
2. 공이 있는 컵의 위치에 숫자 1을 저장한다.
3. M번 만큼의 반복문을 만들고
4. X, Y를 입력 받아 X의 값을 임시 저장소 temp에 저장한 후
5. X에 Y를 대입하고 Y에 X의 값을 미리 넣어 놓았던 temp를 대입한다. (컵의 위치를 바꾸었다.)
모든 반복문이 끝난 후
6. 조건문을 사용하여 컵 배열 안에 숫자 1을 갖고 있는 배열을 찾아
7. 해당 반복문의 i를 + 1 하여 출력한다. (+1을 하는 이유는 인덱스 값이 0부터 시작하기 때문)
'Basic > 코딩테스트' 카테고리의 다른 글
[실버 4] 백준 5568번 자바(JAVA) - 카드 놓기 (0) | 2022.06.02 |
---|---|
[브론즈 1] 백준 1834번 자바(JAVA) - 나머지와 몫이 같은 수 (0) | 2022.05.19 |
[브론즈 1] 백준 3054번 자바(JAVA) - 피터팬 프레임 (0) | 2022.05.15 |
[실버5] 백준 1094번 자바(JAVA) - 막대기 (0) | 2022.05.15 |
[자바 / Java] 백준 알고리즘 기본 설정 (컴파일 에러) (0) | 2022.05.13 |