티스토리 뷰
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()); Listlist = 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
인덱스를 변경하는 것이 아닌, 값을 변경하는 것이기 때문에 조금 난감했다!
'알고리즘 > BaekJoon 알고리즘' 카테고리의 다른 글
[백준 알고리즘] Q1024 수열의 합 (0) | 2018.11.09 |
---|---|
[백준 알고리즘] Q1094 막대기 - Integer.bitCount(num) (0) | 2018.11.09 |
[백준 알고리즘] Q2178 미로탐색 - BFS 너비탐색 알고리즘 (0) | 2018.11.08 |
[백준 알고리즘] Q2606 바이러스 -BFS 너비탐색 알고리즘 (0) | 2018.11.08 |
[백준 알고리즘] Q11057 오르막수 - 동적프로그래밍, 모듈러 분배법칙 (0) | 2018.11.03 |