적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

Algorithm/자료구조 알고리즘

[Swift 알고리즘] 백준 7568 덩치

hongssup_ 2024. 8. 12. 18:14
반응형

×

구현, 브루트포스 - Silver 5

백준 7568 덩치

 

단순 구현 문제인데 풀지 못했다.. 

뭔가 키랑 몸무게 별로 정렬을 해서 비교할 수 있지 않을까 생각했는데 그냥 완전탐색을 해야하는 거였움..

 

중첩 반복문으로 돌려서 덩치를 비교하고, 자신보다 덩치 큰 사람 발견하면 등수 + 1 을 해주면 된다. 

let n = Int(readLine()!)!
var person: [[Int]] = Array(repeating: [0,0], count: n)
var count: [Int] = Array(repeating: 1, count: n)

for i in 0..<n {
    let p = readLine()!.split(separator: " ").map { Int($0)! }
    person[i] = [p[0], p[1]]
}

for i in 0..<n {
    for j in 0..<n {
        if person[i][0] < person[j][0], person[i][1] < person[j][1] {
            count[i] += 1
        }
    }
}

print(count.map { String($0) }.joined(separator: " "))

 

 

다른 풀이

한 번에 튜플로 다 저장해서 요런 식으로 풀어주는 방법도 있더라. 

let n = Int(readLine()!)!

var arr: [(Int, Int, Int)] = []
for _ in 0..<n {
    let input = readLine()!.split(separator: " ").map { Int(String($0))! }
    arr.append((input[0], input[1], 1))
}

for i in 0..<n {
    for j in 0..<n {
        if arr[i].0 > arr[j].0 && arr[i].1 > arr[j].1 {
            arr[j].2 += 1
        }
    }
}

var answer = ""
for a in arr {
    answer += "\(a.2) "
}
print(answer)
728x90
반응형