(Swift) 백준 3009 네 번째 점

SteadySlower·2022년 5월 21일
0

Coding Test

목록 보기
43/305

3009번: 네 번째 점

직사각형의 네 꼭지점의 특성을 보면 각각 두쌍의 같은 x, y 좌표로 이루어져 있습니다.

예를 들면 (1, 1), (1, 2), (2, 1), (2, 2)는 직사각형의 네 꼭지점인데요. x좌표만 따로 떼서 보면 1이 한쌍, 2가 한쌍이죠. y좌표도 마찬가지이고요.

따라서 해당 문제를 풀 때는 x좌표와 y좌표를 각각 Array에 넣고 갯수가 하나 밖에 없는 x좌표와 y좌표를 각각 조합하면 네 번째 점을 구할 수 있습니다.

var xPositions = [Int]()
var yPositions = [Int]()

(0..<3).forEach { _ in
    let input = readLine()!.split(separator: " ").map { Int(String($0))! }
    xPositions.append(input[0])
    yPositions.append(input[1])
}

var targetX: Int = 0
var targetY: Int = 0

xPositions.forEach { x in
    if xPositions.filter({ $0 == x }).count == 1 {
        targetX = x
    }
}

yPositions.forEach { y in
    if yPositions.filter({ $0 == y }).count == 1 {
        targetY = y
    }
}

print(targetX, targetY)

💡  파이썬에서는 리스트 안에 있는 element의 갯수를 세주는 메소드인 List.count(element)메소드가 있었는데요. 아쉽게도 스위프트에는 그런 메소드는 없습니다.

구글링한 결과 가장 간단하게 쓸 수 있는 코드는 filter 고차함수를 활용하는 방법이었습니다.

xPositions.filter({ $0 == x }).count
//👉 Array 중에 x와 같은 값을 가진 element들로만 이루어진 Array를 만들어서 
// 그 Array의 count를 구한다.
// = x의 갯수를 센다.
profile
백과사전 보다 항해일지(혹은 표류일지)를 지향합니다.

0개의 댓글