[Swift] 백준 7568번 덩치
문제 출처: 백준 7568번 덩치
문제
풀이
모든 경우의 수를 비교하여 등수를 구하는 문제로 2중 반복문과 if 문을 이용해 풀어보았습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
struct Physical {
/// 몸무게
var m: Int
/// 키
var k: Int
}
/// 사람의 수
let n = Int(readLine()!)!
/// 몸무게와 키 배열
var arr = [Physical]()
/// 등수 배열
var result = Array(repeating: n, count: n)
// 입력받은 대로 arr배열에 삽입
for _ in 0..<n {
let line = readLine()!.split(separator: " ").compactMap{ Int($0) }
arr.append(Physical(m: line[0], k: line[1]))
}
for i in 0..<n - 1 {
for j in i + 1..<n {
if arr[i].k > arr[j].k && arr[i].m > arr[j].m {
// 키와 몸무게 둘 다 큰 경우
result[i] -= 1
} else if arr[i].k < arr[j].k && arr[i].m < arr[j].m {
// 둘 다 작은 경우
result[j] -= 1
} else {
// 등수를 매길 수 없는 경우
result[i] -= 1
result[j] -= 1
}
}
}
// 결과 출력
for i in 0..<result.count {
print(result[i], terminator: " ")
}
- 전체 사람의 수 n을 입력받습니다.
- 몸무게와 키를 n번 입력받아 구조체 형태로 배열에 저장합니다.
- 2중 반복문을 이용해 배열을 2개 요소를 전부 비교합니다.
- 키와 몸무게를 비교하여 등수를 조정합니다.
비교를 편하게 계산하려고 구조체를 이용했는데 생각해보니 튜플도 있었네요… 하하
이렇게 풀 경우 메모리: 69108 KB, 시간: 8 ms 결과가 나오게 됩니다.
댓글남기기