๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • Welcome.
:: Python ๐Ÿšฉ/๊ธฐ์ดˆ

[Python] 18. ๋‹ฌ๋ ฅ๋งŒ๋“ค๊ธฐ -1-

by EunBird 2021. 3. 7.

 ์ธ์ˆ˜๋กœ ๋…„๋„๋ฅผ ๋„˜๊ฒจ๋ฐ›์•„ ์œค๋…„, ํ‰๋…„์„ ํŒ๋‹จํ•ด์„œ ์œค๋…„์ด๋ฉด True, ํ‰๋…„์ด๋ฉด False๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜.


 ์œค๋…„, ํ‰๋…„ ํŒ๋ณ„์‹ => ๋…„๋„๊ฐ€ 4์— ๋–จ์–ด์ง€๊ณ  100์— ๋–จ์–ด์ง€์ง€ ์•Š๊ฑฐ๋‚˜ 400์— ๋–จ์–ด์ง€๋ฉด ์œค๋…„, ๊ทธ๋ ‡์น˜ ์•Š์œผ๋ฉด ํ‰๋…„
 

return ๊ฐ’์ด ๋…ผ๋ฆฌ๊ฐ’(True ๋˜๋Š” False)์ธ ํ•จ์ˆ˜์˜ ์ด๋ฆ„์€ 'is'๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๊ด€ํ–‰์ด๋‹ค.

 


 

def isLeapYear(year): # ์œค๋…„์ด๋ฉด True, ์•„๋‹ˆ๋ฉด False ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜.
    return year % 4 == 0 and year % 100 != 0 or year % 400 == 0

 

def lastDay(year, month): # ์ธ์ˆ˜๋กœ ๋…„, ์›”์„ ๋„˜๊ฒจ๋ฐ›์•„ ๊ทธ ๋‹ฌ์˜ ๋งˆ์ง€๋ง‰ ๋‚ ์งœ๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜
   = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

    # 12๋‹ฌ์˜ ๋งˆ์ง€๋ง‰ ๋‚ ์งœ๋ฅผ ๊ธฐ์–ตํ•˜๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค. => ์ผ๋‹จ 2์›”์˜ ๋งˆ์ง€๋ง‰ ๋‚ ์งœ๋Š” 28์ผ๋กœ ์ดˆ๊ธฐํ™” ์‹œํ‚จ๋‹ค.
    

    # 2์›”์˜ ๋งˆ์ง€๋ง‰ ๋‚ ์งœ๋ฅผ ํ™•์ •ํ•œ๋‹ค. => ์œค๋…„์ด๋ฉด 29์ผ๋กœ ์ˆ˜์ •ํ•œ๋‹ค.
    # if isLeapYear(year):
        # m[1] = 29
    m[1= 29 if isLeapYear(year) else 28  # isLeapYear(year)์ด T์ด๋ฉด m[1]์€ 29์ด๋‹ค.    

    return m[month - 1]  # ์ธ์ˆ˜๋กœ ๋„˜๊ฒจ๋ฐ›์€ ์›”์— ํ•ด๋‹น๋˜๋Š” ๋งˆ์ง€๋ง‰ ๋‚ ์งœ๋ฅผ ๋ฆฌํ„ด์‹œํ‚จ๋‹ค.

 


def totalDay(year, month, day): # ๋…„, ์›”, ์ผ์„ ๋„˜๊ฒจ๋ฐ›์•„ 1๋…„ 1์›” 1์ผ ๋ถ€ํ„ฐ ์ง€๋‚œ ๋‚ ์งœ์˜ ํ•ฉ๊ณ„๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜
    # 1๋…„ 1์›” 1์ผ ๋ถ€ํ„ฐ ์ „ ๋…„๋„ 12์›” 31์ผ ๊นŒ์ง€ ์ง€๋‚œ ๋‚ ์งœ๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.
    total = (year - 1* 365 + (year - 1// 4 (year - 1// 100 + (year - 1// 400
    # ์ „๋…„๋„ ๊นŒ์ง€ ์ง€๋‚œ ๋‚ ์งœ์˜ ํ•ฉ๊ณ„์— ์ „ ๋‹ฌ๊นŒ์ง€ ์ง€๋‚œ ๋‚ ์งœ๋ฅผ ๋”ํ•œ๋‹ค.
    for i in range(1, month): # i๊ฐ€ 1๋ถ€ํ„ฐ month๊นŒ์ง€ ๋ณ€ํ•˜๋Š” ๋™์•ˆ.
        total += lastDay(year, i) # m = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]์˜ ์„ฑ๋ถ„๋“ค์„ ํ†ตํ•ด ๊ณ„์‚ฐ ๋œ๋‹ค.
    

    return total + day # ์ „๋‹ฌ ๊นŒ์ง€ ์ง€๋‚œ ๋‚ ์งœ์— ์ผ์„ ๋”ํ•ด์„œ ๋ฆฌํ„ด์‹œํ‚จ๋‹ค.

 

 


def weekDay(year, month, day):
    return totalDay(year, month, day) % 7

    # ์ธ์ˆ˜๋กœ ๋…„, ์›”, ์ผ์„ ๋„˜๊ฒจ๋ฐ›์•„ ์š”์ผ์„ ๊ณ„์‚ฐํ•ด ์ˆซ์ž๋กœ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜
    # ์ผ์š”์ผ(0), ์›”์š”์ผ(1), ํ™”์š”์ผ(2), ์ˆ˜์š”์ผ(3), ๋ชฉ์š”์ผ(4), ๊ธˆ์š”์ผ(5), ํ† ์š”์ผ(6)

 

 

 

 

 

# **ํ•˜๋‚˜์˜ ํŒŒ์ด์ฌ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” if __name__ == '__main__':๋ฅผ ์‚ฌ์šฉํ•˜๋‚˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋‚˜ ๋ณ„ ์ฐจ์ด๊ฐ€ ์—†๋‹ค.**
# ํ•˜์ง€๋งŒ ํ˜„์žฌ ํŒŒ์ผ์„ ๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ import ์‹œ์ผœ์„œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด if __name__ == '__main__':๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด 
# ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ–ˆ๋˜ ์ฝ”๋“œ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ํ˜„์žฌ ํŒŒ์ผ์„ import ํ•œ ํŒŒ์ผ์— ์ถœ๋ ฅ๋œ๋‹ค.

if __name__ == '__main__':
    print(isLeapYear(2021))
    print(lastDay(2021, 3))
    print(totalDay(2021, 3, 4))
    print(weekDay(2021, 3, 4))

 

 

#์ฆ‰, __name__ == __main__์€ ์ธํ„ฐํ”„๋ฆฌํ„ฐ์—์„œ ์ง์ ‘ ์‹คํ–‰ํ–ˆ์„ ๊ฒฝ์šฐ์—๋งŒ! if๋ฌธ ๋‚ด์˜ ์ฝ”๋“œ๋ฅผ ๋Œ๋ฆฌ๋ผ๋Š” ๋ช…๋ น์ด ๋ฉ๋‹ˆ๋‹ค.


<year์ด ์œค๋…„์ธ์ง€ ์•„๋‹Œ์ง€ True ํ˜น์€ False๋กœ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜.>
<ํ•ด๋‹น year ํ•ด๋‹น month์˜ ๋งˆ์ง€๋ง‰ ๋‚ ์ด ๋ช‡์ผ์ธ์ง€ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜.>
1๋…„ 1์›” 1์ผ ๋ถ€ํ„ฐ ํ•ด๋‹น year, month, day๊นŒ์ง€ ์ด ๋ช‡์ผ์ธ์ง€ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜.
ํ•ด๋‹น year, month, day๊ฐ€ ๋ช‡์š”์ผ์ธ์ง€ 0~6์˜ ์ˆซ์ž๋กœ ์ถœ๋ ฅ.
๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ ์œ„ ํ•จ์ˆ˜๋“ค์„ importํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—” ์œ„ if๋ฌธ ํ•˜์˜ ๋‚ด์šฉ์ด ์ถœ๋ ฅ๋˜์ง€์•Š๋„๋ก if __name__ == '__main__' ์„ ์„ค์ •.

 

 

์ด์–ด์„œ.

728x90

๋Œ“๊ธ€