์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- WebView
- SwiftUI
- WebApp
- ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
- ์ฝ๋ฉํ ์คํธ
- ๋ฐฑ์ค
- ios
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋ฌธ์์ด
- ์คํ
- ๋ธ๋ฃจํธํฌ์ค
- ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ
- ๋ฐฑํธ๋ํน
- ์ฝํ
- ์ด์งํ์
- dfs
- ๋ถํ ํ์
- ๋ธ๋ฃจํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ
- dp
- ๋นํธ์ฐ์ฐ์
- ๋ถํ ์ ๋ณต
- ์์
- ๋ถํ ์ ๋ณต
- Swift
- ๋์ ํฉ
- Queue
- BFS
- ์๊ณ ๋ฆฌ์ฆ
- Today
- Total
MUKER_DEV with iOS
[swift] ๋ฐฑ์ค - 1308๋ฒ: D-Day ๋ณธ๋ฌธ
๋ฌธ์ ๋งํฌ
1308๋ฒ: D-Day
์ฒซ์งธ ์ค์ ์ค๋์ ๋ ์ง๊ฐ ์ฃผ์ด์ง๊ณ , ๋ ๋ฒ์งธ ์ค์ D-Day์ธ ๋ ์ ๋ ์ง๊ฐ ์ฃผ์ด์ง๋ค. ๋ ์ง๋ ์ฐ๋, ์, ์ผ์์ผ๋ก ์ฃผ์ด์ง๋ฉฐ, ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ๋ค. ์ ๋ ฅ ๋ฒ์๋ 1๋ 1์ 1์ผ๋ถํฐ 9999๋ 12์ 31์ผ ๊น์ง ์ด๋ค.
www.acmicpc.net
๋ฌธ์
์บ ํ์ ์ค๊ฒ ๋ ์ก์ ์ง์ ์บ ํ๊ฐ ๋๋ฌด ์ง๋ฃจํด์ ์ค๋๋ก๋ถํฐ ์บ ํ๊ฐ ๋๋ ๋๊น์ง ๋ฉฐ์น ์ด๋ ๋จ์๋์ง ์์๋ณด๊ณ ์ถ์๋ค. ๊ทธ๋ฐ๋ฐ ์บ ํ๋ ๋น์์์ ์ผ๋ก ๊ธธ์ง๋ ๋ชฐ๋ผ์ (์ค๋ ์ ํฌํจํ ์ง๋ ๋ชจ๋ฅธ๋ค) ์์ผ๋ก ํ๋ํ๋ ์ธ๊ธฐ์๋ ํ๋ค์ด ๋ณด์๋ค.
๋์ฑ ์ ํํ ๊ณ์ฐ์ ์ํด, ์ ์ง์ด๋ ์ค๋ ์ด ์ ํด์ง๋ ๊ธฐ์ค์ ์ฐพ์๋ณด์๊ณ , ๊ทธ๊ฒ์ ๋ค์๊ณผ ๊ฐ์๋ค.
- ์๋ ฅ๊ธฐ์ ์ฐ์๊ฐ 4๋ก ๋๋์ด๋จ์ด์ง๋ ํด๋ ์ฐ์ ์ค๋ ์ผ๋ก ํ๋ค. (2004๋ , 2008๋ , …)
- 100์ผ๋ก ๋๋์ด๋จ์ด์ง๋ ํด๋ ํ๋ ์ผ๋ก ํ๋ค. (2100๋ , 2200๋ , …)
- 400์ผ๋ก ๋๋์ด๋จ์ด์ง๋ ํด๋ ๋ค์ ์ค๋ ์ผ๋ก ํ๋ค. (1600๋ , 2000๋ , …)
๊ทธ๋ฐ๋ฐ ์บ ํ๊ฐ ๋๋ฌด ๊ธธ ๊ฒฝ์ฐ, ์ฌ์ถ๊ธฐ์ธ ์ ์ง์ด๋ ์บ ํ์ ๋ฌด๋จ์ผ๋ก ๋น ์ง์ง๋ ๋ชจ๋ฅธ๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ค๋์ ๋ ์ง๊ฐ ์ฃผ์ด์ง๊ณ , ๋ ๋ฒ์งธ ์ค์ D-Day์ธ ๋ ์ ๋ ์ง๊ฐ ์ฃผ์ด์ง๋ค. ๋ ์ง๋ ์ฐ๋, ์, ์ผ์์ผ๋ก ์ฃผ์ด์ง๋ฉฐ, ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ๋ค. ์ ๋ ฅ ๋ฒ์๋ 1๋ 1์ 1์ผ๋ถํฐ 9999๋ 12์ 31์ผ ๊น์ง ์ด๋ค. ์ค๋์ ๋ ์ง๋ ํญ์ D-Day๋ณด๋ค ์์ ์๋ค.
์ถ๋ ฅ
์ค๋๋ถํฐ D-Day๊น์ง x์ผ์ด ๋จ์๋ค๋ฉด, "D-"๋ฅผ ์ถ๋ ฅํ๊ณ ๊ทธ ๋ค์ ๊ณต๋ฐฑ ์์ด x๋ฅผ ์ถ๋ ฅํ๋ค. ๋ง์ฝ ์บ ํ๊ฐ ์ฒ๋ ์ด์ ์ง์๋๋ค๋ฉด (์ค๋์ด y๋ m์ d์ผ์ด๊ณ , D-Day๊ฐ y+1000๋ m์ d์ผ๊ณผ ๊ฐ๊ฑฐ๋ ๋ฆ๋ค๋ฉด) ๋์ "gg"๋ฅผ ์ถ๋ ฅํ๋ค. ์ค๋์ด 2์ 29์ผ์ธ ๊ฒฝ์ฐ๋ ์ฃผ์ด์ง์ง ์๋๋ค.
์์
์ฑ๊ณต ํ์ด
let numOfDay = [0,31,28,31,30,31,30,31,31,30,31,30]
func checkLeapYear(_ year: Int) -> Bool {
if year % 400 == 0 { return true }
if year % 100 == 0 { return false }
if year % 4 == 0 { return true }
else { return false }
}
func totalDay(_ dateStr: String) -> Int {
let date = dateStr.split { $0 == " " }.map { Int($0)! }
var day = 0
for y in 1...date[0] {
if y == date[0] {
day += numOfDay[0..<date[1]].reduce(0,+)
day += date[2]
if checkLeapYear(y) && date[1] > 2 { day += 1 }
} else {
day += checkLeapYear(y) ? 366 : 365
}
}
return day
}
let now = totalDay(readLine()!)
let dday = totalDay(readLine()!)
let interval = dday-now
print(interval >= 365243 ? "gg" : "D-\(interval)")
ํ์ด ํค์๋
- ์ฒซ ํ์ด ์๋์์ Calendar๋ฅผ ์ฌ์ฉํด ๋ฌธ์ ๋ฅผ ํ์์๋๋ฐ.. ํด๋น๋ฌธ์ ๋ง ๊ทธ๋ฐ๊ฑด์ง ๋ฐฑ์ค ๋ฌธ์ ๋ชจ๋ ๊ทธ๋ฐ๊ฑด์ง Calendar์ฌ์ฉ์ด ๋ฐํ์ ์๋ฌ๋ก ์ด์ด์ง๋๊ฑธ๋ก ํ์ธํ๊ณ ์ง์ ์ค๋ ๊ณผ ์ผ ์๋ฅผ ๊ณ์ฐํด์ ํ์๋ค.
- ๋ฌธ์ ํ์ด์์ ๊ฐ๊ณผํ๊ฒ ์๋ค๋ฉด 1000๋ ์ 3650000์ผ์ด ์๋๋ผ 365243์ผ์ด์๋ค๋ ์ ์ด ์๊ธฐ๊ณ ์ต์ธํ๋ค..ใ
'๐ค ์๊ณ ๋ฆฌ์ฆ > BAEKJOON' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[swift] ๋ฐฑ์ค - 25192๋ฒ: ์ธ์ฌ์ฑ ๋ฐ์ ๊ณฐ๊ณฐ์ด (0) | 2023.09.04 |
---|---|
[swift] ๋ฐฑ์ค - 3048๋ฒ: ๊ฐ๋ฏธ (0) | 2023.08.21 |
[swift] ๋ฐฑ์ค - 1010๋ฒ: ๋ค๋ฆฌ ๋๊ธฐ (0) | 2023.08.16 |
[swift] ๋ฐฑ์ค - 1021๋ฒ: ํ์ ํ๋ ํ (0) | 2023.08.11 |
[swift] ๋ฐฑ์ค - 1050๋ฒ: ์ซ์ ์ ์ฌ๊ฐํ (0) | 2023.08.10 |