(Swift) 백준 1205 등수 구하기

SteadySlower·2022년 8월 2일
0

Coding Test

목록 보기
110/305

1205번: 등수 구하기

문제 풀이 아이디어

- 자료구조/알고리즘
    : P의 최대 크기가 50이므로 완전탐색을 수행해도 됩니다.
- 풀이법
    1. 공동 등수가 있을 경우 (N + 1) - (더 낮은 점수의 갯수)가 등수가 됩니다.
    2. N개를 돌면서 더 낮은 점수의 갯수를 셉니다.
    3. 공동등수를 출력합니다.
    🚫 N == P 이거나 기존의 꼴찌보다 작거나 같은 경우는 예외처리합니다.

코드

import Foundation

// 입력 받기
let input = readLine()!.split(separator: " ").map { Int(String($0))! }
let (N, new, P) = (input[0], input[1], input[2])
var scores = [Int]()

if N > 0 {
    scores = readLine()!.split(separator: " ").map { Int(String($0))! }
//🚫 예외 1: N이 0일 때 -> 입력을 받지 말고 바로 1등으로 올린다.
} else {
    print(1)
    exit(0)
}

//🚫 예외 2: N == P (랭킹리스트가 꽉참) && 새로운 점수가 랭킹의 가장 적은 점수보다 낮음 -> 랭킹에 진입 불가
if N == P && new <= scores.last! {
    print(-1)
    exit(0)
}

// 자기보다 높은 점수를 가진 랭킹을 센다.
var cnt = 0

for score in scores {
    if score > new {
        cnt += 1
    }
}

// 등수를 출력한다.
print(cnt + 1)
profile
백과사전 보다 항해일지(혹은 표류일지)를 지향합니다.

0개의 댓글