감자주먹밥

[백준] 7568 덩치 (swift) 본문

알고리즘/백준

[백준] 7568 덩치 (swift)

JustHm 2022. 1. 3. 15:08
728x90

문제

7568번: 덩치

 

7568번: 덩치

우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩

www.acmicpc.net

문제 해결

키, 몸무게 둘 다 큰 사람이 덩치가 크다는 것을 기억해두자.

tuple을 사용하여 입력받은 값을 저장하고, 하나씩 비교하면 해결 할 수 있다!

코드

typealias info = (Int, Int)
var count: Int = Int(readLine()!)!
var people: [info] = []//[(55, 185), (58, 183), (88, 186), (60, 175), (46, 155)]
var rank: [Int] = Array(repeating: 1, count: count)

for _ in 1...count {
    let temp = readLine()!.split(separator: " ").map{
        Int($0)!
    }
    people.append((temp[0], temp[1]))
}

for pivot in 0..<count {
    for check in 0..<count {
        if pivot == check {continue}
        
        if people[pivot].0 < people[check].0 {
            if people[pivot].1 < people[check].1 {
                rank[pivot] += 1
            }
        }
    }
}

for item in rank {
    print(item, separator: " ")
}

문제 해결 중 어려웠던 것

언어 공부를 했다 싶었는데 써보지 않아 tuple을 사용할때 조금 헤맸다...

문제를 많이 풀어보면서 언어사용을 익숙하게 하는게 관건일 것 같다.

다른 방식

let n = Int(readLine()!)!
var arr = [(Int,Int)]()
var rank = 0
for _  in 0..<n{
    let xy = readLine()!.split(separator:" ").map{Int(String($0))!}
    arr.append((xy[0],xy[1]))
}
for i in arr{
    rank = arr.filter{i.0<$0.0 && i.1<$0.1}.count+1
    print(rank, terminator : " ")
}

마지막에 필터까지 써서 더욱 간단하게 볼 수 있었다... 이거 정말 최고

728x90

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 2231 분해합 (swift)  (0) 2021.12.28
[백준] 2798 블랙잭 (swift)  (0) 2021.12.27
Comments