티스토리 뷰


1. Java 구현

           
import java.io.*;
import java.util.*;

public class Main {	
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		int n = Integer.parseInt(br.readLine());
		List list = new ArrayList<>();
		list.add("1"); list.add("2"); list.add("3");
		for(int i = 0; i < n; i++) {
			String[] input = br.readLine().split(" ");
			int first = list.indexOf(input[0]);
			int second = list.indexOf(input[1]);
			list.set(first, input[1]);
			list.set(second, input[0]);
		}
		
		bw.write(list.get(0) + "\n");
		bw.close();
	}
}


2. 코드설명

 이 문제는 흔히, 야바위라고 하는 사행성 게임을 코드로 구현한 것이다. 이 알고리즘은 한줄마다 입력받은 숫자들을 서로 바꾸면 해결이 가능하다.

 단 입력받은 숫자가 순서를 바꿔야하는 인덱스가 아닌, 입력받은 숫자를 서로 바꿔야 한다. (이 부분이 조금 헷갈렸다)

 처음에는 '1 2 3' 이 기본으로 셋팅이 된다. 첫줄에 '3 1' 을 입력받았기 때문에 값이 3과 1의 위치를 바꾸고 나면 결과는 '3 2 1'이 된다.

 두번째줄에 '2 3'을 입력받았기 때문에 2와 3의 위치를 바꾼다. 그러면 결과는 '2 3 1'이 된다.

 세번째줄에는 '3 1'을 입력받았기 때문에 3과 1의 위치를 바꾼다. 그러면 결과는 '2 1 3'이 된다.

 마지막으로 '3 2'를 입력받았기 때문에 3과 2의 위치를 바꾼다. 그러면 최종결과는 '3 1 2'가 된다. 그리고 공의 위치는 항상 0번째이기 때문에 3이 된다. 

 입력받은 숫자가 단순히 인덱스였다면, swap() 메소드를 구현해서 간단히 풀 수 있겠지만, 인덱스가 아닌 값을 바꾸는 것이기 때문에 list를 활용했다.


3. Pain Point

 인덱스를 변경하는 것이 아닌, 값을 변경하는 것이기 때문에 조금 난감했다!


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함