백준(BOJ) 2851 슈퍼마리오 - Swift

김민석·2022년 4월 4일
0

PS

목록 보기
1/2
post-thumbnail

슈퍼마리오

문제

https://www.acmicpc.net/problem/2851

유형

  • 구현
  • 브루트포스 알고리즘

풀이

이 문제는 버섯을 순서대로 먹을 때 최대한 저수가 100과 가깝게 먹을 수 있도록 구현해야한다. 만약 98과 102가 있다면 더 큰 수인 102를 선택해줘야 한다.

그래서 나는 일단 점수를 입력받은 뒤, i번째까지 먹은 점수를 sumScore에 담아줬다. 그 뒤 sumScore에서 100을 뺀 값을 newSum에 담아줬다. 이제 newSum의 절대값을 하나씩 입력받은 뒤 그 값이 더 작으면 x 변수에 넣어주었다. 만약 그 값과 x 변수의 값이 같다면?? 절대값을 없애고 비교해서 찾아줬다.

소스코드

var score: [Int] = []
for _ in 0..<10 {
    score.append(Int(readLine()!)!)
}
var sumScore: [Int] = []
var sum = 0

for i in 0..<10 {
    sum += score[i]
    sumScore.append(sum)
}

let newSum = sumScore.map { $0 - 100 }
var index = 0
var x = Int.max
var recentResult = 0
for i in 0..<newSum.count {
    if x > abs(newSum[i]) {
        x = abs(newSum[i])
        recentResult = newSum[i]
        index = i
    }
    
    if x == abs(newSum[i]) {
        if recentResult < newSum[i] {
            index = i
        }
    }
}
print(sumScore[index])
profile
안녕하세요 95년생 김민석입니다

0개의 댓글