2022. 11. 10. 16:44ใAlgorithm
๋ฐฑ์ค - NBA๋๊ตฌ(Swift)
๋ฌธ์ ์ค๋ช
https://www.acmicpc.net/problem/2852
๋์ ํ์ด
๋ฌธ์ ์ ์๊ณ ๋ฆฌ์ฆ์ ์ดํดํ๋๋ฐ ์๊ฐ์ด ์ค๋๊ฑธ๋ ธ๋ค.
๊ทธ์ ๋ฌธ์ ์ ์๊ตฌ์ฌํญ๋๋ก ๋ฌผ ํ๋ฅด๋ฏ์ด ๊ตฌํ๋ง ํ๋ฉด ๋๋์ค ์์๋๋ฐ ๊ท์น์ ์ฐพ์์ผ ํ๋ค.
๋จผ์ A, Bํ ๋๊ฐ์ ํ๋ง ์๊ธฐ ๋๋ฌธ์ 1๊ณผ 2๋ก ํ๋์ฝ๋ฉํด์ ๋ฌธ์ ๋ฅผ ํ์ด์ผ ๊ฒ ๋ค๊ณ ์๊ฐ์ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ ์ค ํ๋์ ํ์ด ์ฒ์ ์ด๊ธฐ๋ ์์ ๊ณผ ๋น๊ธฐ๋ ์์ ์ ๋ถ๊ธฐ๋ณ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ ํฌ์ธํธ์๋ค.
๋จผ์ ํ๋์ ํ์ด ์ฒ์ ์ด๊ธฐ๋ ์์ ์๋ ๊ทธ ํ์ ๋์ ์๊ฐ์ ๋ด์์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ํ์ด ์ฒ์ ์ด๊ธด ํ๊ณผ ์ค์ฝ์ด๊ฐ ๊ฐ์์ง๊ธฐ ์ ๊น์ง๋ ์ง๋์น๊ณ ์ค์ฝ์ด๊ฐ ๊ฐ์์ง ๋ ํ์ฌ ํ์์ค์ธ ์๊ฐ๊ณผ ์ฒ์ ๋ด์๋ ์๊ฐ๊ณผ์ ์ฐจ์ด๋ฅผ ๋์ ์์ผฐ๋ค.
import Foundation
let n = Int(readLine()!)!
var dic: [Int: Int] = [1: 0, 2: 0]
var flag = false // ๊ณจ์ ๋ ๋ง์ด ๋ฃ์ ํ์ด ์๊ธธ๋ ์ฒ์์๋ง ์๊ฐ์ ๋ด๊ธฐ์ํ ํ๋๊ทธ
var oneScore = 0 // ์ฒซ ๋ฒ์งธ ํ์ ๋์
var secondScore = 0 // ๋ ๋ฒ์งธ ํ์ ๋์
var curTime = "00:00" // ๊ณจ์ ๋ ๋ง์ด ๋ฃ์ ํ์ด ์๊ธธ๋ ์ฒ์์ ์๊ฐ๋
for _ in 0..<n {
let input = readLine()!.components(separatedBy:" ")
let team = Int(input[0])!, time = input[1]
switch team {
case 1:
oneScore += 1
case 2:
secondScore += 1
default:
break
}
// ๋๊ฐ์ ํ ์ค ํ ํ์ด ์ค์ฝ์ด๊ฐ ๋ ๋ง์์ง๋(flag๋ก ์ธํ ์ฒ์์๋ง)
if (oneScore > secondScore || oneScore < secondScore) && !flag {
curTime = time
flag = true
}
// ์ค์ฝ์ด๊ฐ ๊ฐ์์ง๋ ์ ์ ๋์
if oneScore == secondScore {
if team == 2 {
dic[1]! += (parseStringToSecond(time)-parseStringToSecond(curTime))
} else {
dic[2]! += (parseStringToSecond(time)-parseStringToSecond(curTime))
}
flag = false
}
}
// ๋๋๊ณ ๋์ ๋ฃ์ ํ์ด ๋จ์์์ ๋ ๋ง๋ฌด๋ฆฌ ์๊ฐ์์ ๋นผ์ ๋์
if oneScore > secondScore {
dic[1]! += parseStringToSecond("48:00") - parseStringToSecond(curTime)
} else if oneScore < secondScore {
dic[2]! += parseStringToSecond("48:00") - parseStringToSecond(curTime)
}
print(parseSecondToString(dic[1]!))
print(parseSecondToString(dic[2]!))
// ์๊ฐString์ ์ด๋จ์๋ก ๋ณ๊ฒฝ
func parseStringToSecond(_ time: String) -> Int {
let times = time.split(separator: ":").map{Int($0)!}
return times[0]*60 + times[1]
}
// ์ด๋จ์๋ฅผ ์๊ฐString์ผ๋ก ๋ณ๊ฒฝ
func parseSecondToString(_ time: Int) -> String {
let m = time / 60
let c = time % 60
var str = ""
if m < 10 {
str += "0\(m)"
} else { str += "\(m)"}
str += ":"
if c < 10 {
str += "0\(c)"
} else { str += "\(c)"}
return str
}
ํผ๋๋ฐฑ
์ด๋ฌํ ๋ฌธ์ ๋ ๋น ๋ฅด๊ฒ ๊ท์น์ ์ฐพ๋ ๊ฒ ์ค์ํ๋ค.
์ด๋ ์์ ์์ ๊ฐ์ด ๋์ ํ๊ณ , ๋ฆฌ์ ํด์ผํ๋์ง๋ง ์ ํํ๊ฒ ์บ์นํ ์ ์๋ค๋ฉด ๋ ๋น ๋ฅด๊ฒ ํ ์ ์์ ๊ฒ์ด๋ค.
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค - ํ ์ค๋ก ์๊ธฐ(Swift) (0) | 2022.11.11 |
---|---|
๋ฐฑ์ค - ๋ญํน์ ๋๊ธฐ์ด(Swift) (1) | 2022.11.11 |
๋ฐฑ์ค - ์ค์์น ์ผ๊ณ ๋๊ธฐ(Swift) (0) | 2022.11.10 |
๋ฐฑ์ค - ๊ธฐ์์บ์คํฐ(Swift) (0) | 2022.11.10 |
๋ฐฑ์ค - ๋ฑ์๊ตฌํ๊ธฐ(Swift) (0) | 2022.11.09 |