이 세계에선 내가 개발자?
[14582/Swift] 오늘도 졌다 본문
*** 언어는 Swift! ***
이번에는 되게 재미있는 내용을 담고 있는 문제였다. 14582번의 오늘도 졌다 라는 문제였다.
자세한 문제는 아래와 같다.
나는 야구를 잘 몰라서 처음에 문제를 이해하는 데 조금 시간이 걸렸다. 근데 뭐 그렇게 어려운 내용은 아니었어서 그래도 금방 이해가 됐다.
역전승도 아니고 역전패라니... • ᴗ •̥ ˳ ˳
역전패는 말 그대로 이기고 있다가 막판에 지는 걸 이야기한다. 자 그럼 슬프지만 문제를 한 번 쪼개보자
1. 첫째 줄과 둘째 줄에는 각각 울림과 스타트링크의 득점의 주어진다.
2. 1회초, 1회말을 거치면서 울림과 스타트링크의 득점을 계산한다.
3. 경기가 진행될 동안 울림이 이긴 적이 있으면 역전패 처리를 한다.
어짜피 울림은 지게 되어있다는 걸 문제에서 명시해주었으니 (스타트링크 걸리버스의 총 득점이 울림 제미니스의 총 득점보다 많다.)
우리는 울림이 스타트링크를 이긴적이 있는지만 알면 된다.
1. 첫째 줄과 둘째 줄에는 각각 울림과 스타트링크의 득점의 주어진다.
항상 하던대로 울림과 스타트링크의 득점을 입력받는다.
/// 첫째 줄에는 9개의 정수가 주어진다 -> 울림 제미니스가 1회 초, 2회 초 ... 9회 초에 낸 득점
let woollimTotalScore = readLine()!
let woollimScoreArray: [String] = woollimTotalScore.components(separatedBy: " ")
var woollimScore: Int = 0
/// 두 번째 줄에는 9개의 정수가 주어진다 -> 스타트링크 걸리버스가 1회 말, 2회 말 ... 9회 말에 낸 득점
let startLinkTotalScore = readLine()!
let startLinkScoreArray: [String] = startLinkTotalScore.components(separatedBy: " ")
var startLinkScore: Int = 0
var match: Int = 1
점수를 세기 위해 각각 팀의 Score 변수와 경기 횟수를 세기 위한 match 변수도 추가해준다.
2. 1회초, 1회말을 거치면서 울림과 스타트링크의 득점을 계산한다.
경기는 총 9번을 진행한다. 그렇기 때문에 while문을 이용해 9번 반복한다.
while match <= 9 {
1회 초, 2회 초 이렇게 울림이 먼저 시작하기 때문에 울림의 득점을 하나씩 Score 변수에 더해준다.
woollimScore += Int(woollimScoreArray[match - 1])!
그리고 여기서 1회 말이 시작하기 전에 울림이 스타트링크에게 이기고 있는지 체크한다.
우리는 울림이 언제 역전패를 당할 건지가 중요하기 때문에 스타트링크가 경기를 진행하기 전에 체크한다.
/// 울림이 이기고 있으면 true
if woollimScore > startLinkScore {
woollimWin = true
}
다음으로 스타트링크의 득점을 Score 변수에 더해준다.
startLinkScore += Int(startLinkScoreArray[match - 1])!
그리고 다음 경기를 시작한다.
match += 1
이렇게 9번을 반복하고 난 후 어짜피 결과는 울림의 패이기 때문에 울림이 이긴 적이 있는지를 확인해서 이긴 적이 있으면 역전패를 당했다 출력한다.
print(woollimWin ? print("Yes") : print("No"))
이런 식으로 짧지만 언제 역전패인지 아는 순간이 중요하기 때문에 조금 애를 먹었던 문제였던 것 같다.
그래도 오늘도 한 건 해결!
'알록리즘 > BAEKLOG' 카테고리의 다른 글
[14495/Swift] 피보나치 비스무리한 수열 (0) | 2023.06.14 |
---|---|
[4358/Swift] 생태학 (0) | 2023.06.02 |
[2607/Swift] 비슷한 단어 (0) | 2023.05.11 |
[2164/Swift] 카드2 (0) | 2023.05.10 |
[1920/Swift] 수 찾기 (0) | 2023.05.03 |