직사각형의 네 꼭지점의 특성을 보면 각각 두쌍의 같은 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의 갯수를 센다.