์ฐ๋ ์งํ๋ฐ(1340๋ฒ)
Silver 5
#๊ตฌํ #๋ฌธ์์ด #ํ์ฑ
๋ฌธ์ ๋ด์ฉ
๋ฌธ์ ์ ๊ทผ
๋ ์ง๊ฐ ๋ถ๊น์ง ์ ๋ ฅ๋๊ธฐ ๋๋ฌธ์ ์งํ๋์ ๋จ์๋ฅผ ํ๋ฃจ(365)๋ก ์ ํด์ ์งํ๋๋ฅผ ๊ตฌํ๋ฉด ์ ๋๋ค.
ํ๋ฃจ์์ ๋ ์ชผ๊ฐ์ ๋ถ์ผ๋ก ์ ํด์ ์งํ๋๋ฅผ ๊ตฌํด์ผ ํ๋ค. ํ๋ฃจ๋ฅผ ๋ถ์ผ๋ก ๋ณํํ๋ฉด 1440๋ถ์ด๋ค.
๋ฐฑ๋ถ์จ์ ๊ตฌํ๋ ๊ณต์์ ์ฝ๋ค.
์ ๋ ฅ๋ฐ์ ๋ ์ง๊ฐ 1์ 1์ผ์์๋ถํฐ ์ผ๋ง๋ ์ง๋ ๋ ์ง์ธ์ง ๊ตฌํ ๋ค์์, hour๋ฅผ 60์ ๊ณฑํด ๋ํด์ฃผ๊ณ , ๋ถ์ ๋ํด์ฃผ๋ฉด 1๋ ์์ ๋ถ์ ๊ธฐ์ค์ผ๋ก ์ผ๋ง๋ ์ง๋ฌ๋์ง ์ ์ ์๋ค.
์ด๋ฅผ ๊ตฌํด 365 ๋๋ 366์ผ๋ก ๋๋ ์ 100์ ๊ณฑํ๋ฉด ์ ๋ต์ด ๋๋ค.
365 ๋ง๊ณ 366์ ์ฐ๋ ์ด์ ๋ ์ค๋ ์ ์์ํ๊ธฐ ์ํด์์ด๋ค. ์ค๋ ์ 2์์ด 29์ผ๊น์ง ์๊ธฐ ๋๋ฌธ์ ํ๋ฃจ๊ฐ ๋ ๊ธธ๋ค.
1์ 1์ผ๋ก๋ถํฐ ์ผ๋ง๋ ์๊ฐ์ด ์ง๋ฌ๋์ง ๋ถ์ผ๋ก ํ์ฐํ ์ฝ๋๋ ์๋์ ๊ฐ๋ค.
val dayProgressNum = (localDateTime.dayOfYear - 1) * 1440.0 + hour * 60 + minute
localDateTime์ dayOfYear๋ฅผ ์ด์ฉํด 365์ผ ์ค์์ ์ผ๋ง๋ ๋ ์ง๊ฐ ์ง๋ฌ๋์ง ํ์ธํ๋ค. -1์ ํด์ฃผ๋ ์ด์ ๋ ์ ๊ฐ์ด 1์ 1์ผ์ ํฌํจํ๊ธฐ ๋๋ฌธ์ด๋ค. ์งํ๋์์๋ 1์ 1์ผ์ ํฌํจํ๋ฉด ์ ๋๋ค.
๋ฌธ์ ํด๊ฒฐ ์ฝ๋
import java.io.BufferedReader
import java.io.InputStreamReader
import java.time.LocalDateTime
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val monthParser = mapOf(
"January" to 1, "February" to 2, "March" to 3, "April" to 4,
"May" to 5, "June" to 6, "July" to 7, "August" to 8,
"September" to 9, "October" to 10, "November" to 11, "December" to 12,
)
val dateString = readLine().split(" ")
val month = monthParser[dateString.first()]!!
val dayOfMonth = dateString[1].replace(",", "").toInt()
val year = dateString[2].toInt()
val time = dateString[3].split(":")
val hour = time.first().toInt()
val minute = time.last().toInt()
val localDateTime = LocalDateTime.of(year, month, dayOfMonth, hour, minute, 0)
val dayProgressNum = (localDateTime.dayOfYear - 1) * 1440.0 + hour * 60 + minute
// ์ค๋
์ด๋ฉด 366์ผ
val yearToMinute = if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0) 1440 * 366
else 1440 * 365
println(dayProgressNum / yearToMinute * 100)
}
๋ฌธ์ ํ์ด
์์ด ํ ์์ด๋ก ์ ๋ ฅ๋๊ธฐ ๋๋ฌธ์ ์ ์ฉ parser map์ ๋ง๋ค์ด์ ์ซ์๋ก ๋ณํํ ์ ์๋๋ก ํด์ฃผ๊ณ , dateString์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํด์ LocalDateTime์ผ๋ก ๋ฐ๊ฟ ์ฃผ์๋ค.
LocalDateTime ์ ์ฉ ๋ณ์์ธ dayOfYear๋ก 365์ผ ์ค ๋ฉฐ์น ์ด ์ง๋ฌ๋์ง ์ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ hour์ minute๋ฅผ ๋ํด ์ง๋ ์๊ฐ์ ๋ถ์ผ๋ก ๋ณํํด ๊ตฌํด ์ฃผ์๋ค.
์ด์ 365์ผ๋ก ๋๋ ์ฃผ๊ณ 100์ ๊ณฑํ๋ฉด ๋๋๋ฐ, ์ค๋ ์ธ ๊ฒฝ์ฐ์๋ 2์ 29์ผ๊น์ง ์์ด์ ํ๋ฃจ๊ฐ ๋ ์๊ธฐ ๋๋ฌธ์ 366์ผ๋ก ์ค์ ํด์ ๊ณ์ฐํ๋ค.
๋ฌธ์ ํด๊ฒฐ ๊ณผ์
์งํ๋๋ฅผ ๋ถ์ผ๋ก ๋ณํํ ์ ์์ผ๋ฉด ์ด๋ ต์ง ์์ ๊ตฌํ ๋ฌธ์ ์ด๋ค.
'๐ฏ | ๋ฐฑ์ค > ๐ | Silver' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Kotlin, S3] ๋ฐฑ์ค 31883๋ฒ FA์์ ์ง (0) | 2024.08.09 |
---|---|
[Kotlin, S5] ๋ฐฑ์ค 9196๋ฒ ์ ์ ์ง์ฌ๊ฐํ (0) | 2024.08.09 |
[Kotlin, S1] ๋ฐฑ์ค 5525๋ฒ IOIOI (0) | 2024.08.06 |
[Kotlin, S1] ๋ฐฑ์ค 1389๋ฒ ์ผ๋น ๋ฒ ์ด์ปจ์ 6๋จ๊ณ ๋ฒ์น (0) | 2024.08.05 |
[Kotlin, S2] ๋ฐฑ์ค 30804๋ฒ ๊ณผ์ผ ํํ๋ฃจ (0) | 2024.08.05 |