본문 바로가기
Algorithm/문제풀이_백준

Swift) 백준 7568번 (덩치)

by Joahnee 2021. 8. 19.

요구능력 : 경우의수를 전부 따질줄 아느냐

 

코드설명 : 

 

1. 2차원 배열을 생성한다.(x, y)형식으로 받기위해 [[0, 0], [0, 0]] 이런 형식으로 생성함.(겉에 2차원은 n개, 안에 1차원 배열은 2개만)

 

2. 랭킹을 저장할 배열을 생성하고 1씩 넣어놓는다.

 

3. n개만큼 1차원 배열을 받아서 2차원 배열에 넣는다.

 

4. 자기자신까지 포함해서 경우의 수를 전부 돌려본다.

자기자신까지 포함해서 돌려보는이유?

어차피 몸무게와 키 둘 다 작아야지 순위가 뒤로 밀려나기 때문에 몸무게와 키가 같은건 상관없기 때문에..

굳이 자기자신을 빼서 머리를 더굴릴 필요는 없다.

 

5. terminator를 띄어쓰기로 배열을 하나씩 출력한다.   

 

후기 : 무난하게 전체경우의수를 따져본다고 생각하며 풀었다.

let n = Int(readLine()!)!
var arr = Array(repeating: Array(repeating: 0, count: 2), count: n)
var rankArr = Array(repeating: 1, count: n)

for k in 0..<n {
    arr[k] = readLine()!.split(separator: " ").map{Int($0)!}
}

for i in 0..<n {
    for j in 0..<n {
        if arr[i][0] < arr[j][0] && arr[i][1] < arr[j][1] {
            rankArr[i] += 1
        }
    }
}
for k in 0..<n {
    print("\(rankArr[k])", terminator: " " )
}

댓글