Bibi's DevLog πŸ€“πŸŽ

[λ°±μ€€ 16199] λ‚˜μ΄ κ³„μ‚°ν•˜κΈ° (Swift) λ³Έλ¬Έ

ν”„λ‘œκ·Έλž˜λ°/μ•Œκ³ λ¦¬μ¦˜ 풀이 Swift

[λ°±μ€€ 16199] λ‚˜μ΄ κ³„μ‚°ν•˜κΈ° (Swift)

λΉ„λΉ„ bibi 2023. 2. 16. 12:04

16199번: λ‚˜μ΄ κ³„μ‚°ν•˜κΈ°

μ–΄λ–€ μ‚¬λžŒμ˜ 생일과 κΈ°μ€€ λ‚ μ§œκ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, κΈ°μ€€ λ‚ μ§œ μ‹œμ μ˜ κ·Έ μ‚¬λžŒμ˜ λ‚˜μ΄λ₯Ό κ΅¬ν•˜λŠ” λ¬Έμ œμ΄λ‹€.

  • 만 λ‚˜μ΄
    • νƒœμ–΄λ‚  λ•ŒλŠ” 0살이닀.
    • 생일이 될 λ•Œ 1살을 λ¨ΉλŠ”λ‹€. μ΄λ•Œ, 생일 당일뢀터 1살을 λ”ν•œλ‹€.
    • 2002λ…„ 3μ›” 5일이 생일인 μ‚¬λžŒμ€ 2003λ…„ 3μ›” 5일뢀터 1살이 λœλ‹€.
  • μ„ΈλŠ” λ‚˜μ΄ (ν•œκ΅­μ‹ λ‚˜μ΄ 계산)
    • νƒœμ–΄λ‚  λ•ŒλŠ” 1살이닀.
    • 연도가 λ°”λ€Œλ©΄ 1살을 λ¨ΉλŠ”λ‹€.
  • μ—° λ‚˜μ΄
    • νƒœμ–΄λ‚  λ•ŒλŠ” 0살이닀.
    • 연도가 λ°”λ€Œλ©΄ 1살을 λ¨ΉλŠ”λ‹€.

풀이

μ„ΈλŠ” λ‚˜μ΄λŠ” 기쀀연도 - 생일연도 + 1 둜, μ—° λ‚˜μ΄λŠ” 기쀀연도 - 생일연도 둜 κ°„λ‹¨νžˆ ꡬ할 수 μžˆλ‹€.

λ¬Έμ œλŠ” 만 λ‚˜μ΄λ‹€.

  • νƒœμ–΄λ‚  λ•Œ 0μ‚΄
  • 생일이 지날 λ•Œλ§ˆλ‹€ 1살을 λ¨ΉλŠ”λ‹€.
    • κΈ°μ€€μ—°λ„μ˜ 월이 더 큰 경우 = 생일이 μ§€λ‚œ 것
    • κΈ°μ€€μ—°λ„μ˜ 월은 κ°™μ§€λ§Œ μΌμˆ˜κ°€ κ°™κ±°λ‚˜ 큰 경우 = 생일이 μ§€λ‚œ 것.
      • 이 λ•Œ 생일 당일도 ν¬ν•¨ν•œλ‹€. (2002λ…„ 3μ›” 5일이 생일인 μ‚¬λžŒμ€ 2003λ…„ 3μ›” 5일뢀터 1살이 λœλ‹€.)
let birthDayArr = readLine()!.split(separator: " ").map { Int($0)! }
let currentArr = readLine()!.split(separator: " ").map { Int($0)! }

let birthYear = birthDayArr[0]
let birthMonth = birthDayArr[1]
let birthDay = birthDayArr[2]
let currentYear = currentArr[0]
let currentMonth = currentArr[1]
let currentDay = currentArr[2]

if currentMonth > birthMonth {
    print(currentYear - birthYear)
} else if currentMonth == birthMonth
&& currentDay >= birthDay {
    print(currentYear - birthYear)
} else {
    print(currentYear - birthYear - 1)
} // 만 λ‚˜μ΄

print(currentYear - birthYear + 1) // μ„ΈλŠ” λ‚˜μ΄

print(currentYear - birthYear) // μ—° λ‚˜μ΄

λ°˜λ‘€

λ‚˜λŠ” λ§Œλ‚˜μ΄ 쑰건식 μž‘μ„±μ„ ν—€λ©”λ‹€κ°€ λ°˜λ‘€λ₯Ό μ°Ύμ•˜λ‹€.

2002 3 5
2003 3 5

μœ„μ™€ 같이 생일 당일인 경우 잘 μ„Έμ–΄μ§€λŠ”μ§€ (λ‹΅ : 1 2 1),

2002 2 2
2003 3 1

μœ„μ™€ 같이 생일이 지났고, 월은 크고 일은 μž‘μ€ κ²½μš°λ„ 잘 μ„Έμ–΄μ§€λŠ”μ§€ (λ‹΅ : 1 2 1)

λ₯Ό 확인해 보면 도움이 λœλ‹€.