#7568 덩치
문제 정리
풀이
import Foundation
let n = Int(readLine()!)!
var persons = [(weight: Int, height: Int)]()
// 입력 받기
for _ in 0..<n {
let input = readLine()!.split(separator: " ").map{ Int($0)! }
persons.append((input.first!, input.last!))
}
var ranks = [Int](repeating: 1, count: n)
// 비교
for i in 0..<persons.endIndex {
for j in 0..<persons.endIndex {
let me = persons[i]
let other = persons[j]
if me == other { continue } // 자기 자신과 비교 X
// 자신보다 더 큰 덩치의 사람이 있으면 순위를 뒤로 미룸
if (me.weight < other.weight) && (me.height < other.height) {
ranks[i] += 1
}
}
}
ranks.forEach { print($0, terminator: " ") }
만일 자신보다 더 큰 덩치의 사람이 k명이라면 그 사람의 덩치 등수는 k+1이 된다. 이렇게 등수를 결정하면 같은 덩치 등수를 가진 사람은 여러 명도 가능하다
이 부분에서 힌트를 얻어, 모든 사람의 등수를 1로 초기화 후 (1 + 나보다 덩치 큰 사람의 수) 로 등수를 계산
풀고나서 알게된 것
입력값이 잘 들어왔는지 확인하려고 초반에 작성한 print(persons)를 제출할 때 지웠어야 했는데, 까먹어서 한참동안 왜 안되지 고민하다 30분만에 발견했다..
디버깅용 코드는 주석으로 표시를 해두자ㅜㅜ
'알고리즘' 카테고리의 다른 글
[백준 BOJ] BOJ-1018 체스판 다시 칠하기 (0) | 2022.09.18 |
---|---|
[백준 BOJ] BOJ-8393 합 (0) | 2022.09.18 |
[백준 BOJ] BOJ-1920 수 찾기 (0) | 2022.09.18 |
[백준 BOJ] BOJ-1059 좋은 구간 (0) | 2022.09.18 |
[백준 BOJ] BOJ-1010 다리 놓기 (0) | 2022.09.18 |