[백준] 공 (1547)

문제 설명

백준 1547번 문제 링크

입력 및 출력

» 입력

  • 첫째 줄에 컵의 위치를 바꾼 횟수 M이 주어지며, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 컵의 위치를 바꾼 방법 X와 Y가 주어지며, X번 컵과 Y번 컵의 위치를 서로 바꾸는 것을 의미한다. X와 Y의 값은 3보다 작거나 같고, X와 Y가 같을 수도 있다. 컵을 이동시킨 후에 공이 컵 바깥에 있는 경우는 없다.

» 출력

첫째 줄에 공이 들어있는 컵의 번호를 출력한다. 공이 사라져서 컵 밑에 없는 경우에는 -1을 출력한다.

예제 입출력

입력 출력
4
3 1
2 3
3 1
3 2
3

문제 풀이 (KOTLIN)

import java.util.Scanner

fun main(args: Array<String>) = with(Scanner(System.`in`)){
    val map = mutableMapOf<Int, Boolean>()
    map[1] = true
    map[2] = false
    map[3] = false

    repeat(nextInt()) {
        val swap1 = nextInt()
        val swap2 = nextInt()

        if (map[swap1] == true) {
            map[swap1] = false
            map[swap2] = true
        } else if (map[swap2] == true){
            map[swap1] = true
            map[swap2] = false
        }
    }

    map.forEach { (t, u) -> if (u) println(t) }
}

문제 풀이 (SWIFT)

var ball = 1

for _ in 0..<Int(readLine()!)! {
    let swap = readLine()!
        .split(separator: " ")
        .map { Int($0)! }
        .filter { $0 != ball }
    
    if swap.count == 1 {
        ball = swap[0]
    }
}

print(ball)

태그:

카테고리:

업데이트: