일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 |
- 맥북
- 편스토랑
- 데이콘
- 백준
- dacon
- Git
- 프로그래머스 파이썬
- AI 경진대회
- programmers
- 금융문자분석경진대회
- 자연어처리
- leetcode
- 캐치카페
- 코로나19
- Real or Not? NLP with Disaster Tweets
- 프로그래머스
- Kaggle
- Baekjoon
- ChatGPT
- gs25
- hackerrank
- 파이썬
- SW Expert Academy
- github
- ubuntu
- 편스토랑 우승상품
- Docker
- PYTHON
- 우분투
- 더현대서울 맛집
- Today
- Total
솜씨좋은장씨
[BaekJoon] 9948번 : Have you had your birthday yet? (Python) 본문
[BaekJoon] 9948번 : Have you had your birthday yet? (Python)
솜씨좋은장씨 2022. 11. 17. 11:17코딩 1일 1문제! 오늘의 문제는 생일을 맞아 birthday 가 들어간 백준의 Have you had your birthday yet? 입니다.
9948번: Have you had your birthday yet?
Today it is 4th August. If you were born before 4th August (in whatever year you were born) then you have already had your 2007 birthday. If you were born after 4th August, you have not yet had your 2007 birthday. If you were born on 4th August, happy birt
www.acmicpc.net
🧑🏻💻 문제 풀이
생일을 입력받으면 ( 형식 : 일(숫자) 월(문자) / ex) 17 November )
2007년 기준으로
8월 4일 이전인지 이후인지
8월 4일이어서 생일인지 2월 29일이어서 윤년에만 생일이라 올해는 생일이 없는지 확인하는 문제입니다.
def convert_str_month_to_num(str_month):
base_dict = {
"January": 1, "February": 2, "March": 3, "April": 4,
"May": 5, "June": 6, "July": 7, "August": 8,
"September": 9, "October": 10, "November": 11,"December": 12
}
return base_dict[str_month]
영어로 되어있는 월 정보를 숫자로 바꾸어주는 함수를 하나 만들어주었습니다. ( November -> 11 )
def get_day_month_from_birthday_string(birthday):
day, month = birthday.split()
day = int(day)
month = convert_str_month_to_num(
str_month=month
)
return day, month
그 함수를 활용하여 입력받은 생일 날짜에서 월과 일을 숫자로 변환하는 함수를 만들어줍니다.
17 November -> 17, 11
def get_day_month_from_birthday_string(birthday):
day, month = birthday.split()
day = int(day)
month = convert_str_month_to_num(
str_month=month
)
return day, month
이제 우리가 목표했던
2007년 기준으로
8월 4일 이전인지 이후인지
8월 4일이어서 생일인지 2월 29일이어서 윤년에만 생일이라 올해는 생일이 없는지를 확인하는 함수를 만들고
각 케이스별로 출력해야하는 문자열을 정답으로 return 하도록 하면 끝! 입니다.
def birthday_check_2007(birthday):
day, month = get_day_month_from_birthday_string(
birthday=birthday
)
if day == 29 and month == 2:
answer = "Unlucky"
elif day == 4 and month == 8:
answer = "Happy birthday"
else:
birthday_datetime = datetime(year=2007, month=month, day=day)
standard_datetime = datetime(year=2007, month=8, day=4)
if birthday_datetime < standard_datetime:
answer = "Yes"
else:
answer = "No"
return answer
입력과 출력이 포함된 전체 코드는 아래를 참고해주세요.
🧑🏻💻 코드 ( Solution )
from datetime import datetime
def convert_str_month_to_num(str_month):
base_dict = {
"January": 1, "February": 2, "March": 3, "April": 4,
"May": 5, "June": 6, "July": 7, "August": 8,
"September": 9, "October": 10, "November": 11,"December": 12
}
return base_dict[str_month]
def get_day_month_from_birthday_string(birthday):
day, month = birthday.split()
day = int(day)
month = convert_str_month_to_num(
str_month=month
)
return day, month
def birthday_check_2007(birthday):
day, month = get_day_month_from_birthday_string(
birthday=birthday
)
if day == 29 and month == 2:
answer = "Unlucky"
elif day == 4 and month == 8:
answer = "Happy birthday"
else:
birthday_datetime = datetime(year=2007, month=month, day=day)
standard_datetime = datetime(year=2007, month=8, day=4)
if birthday_datetime < standard_datetime:
answer = "Yes"
else:
answer = "No"
return answer
if __name__ == "__main__":
birthday_list = []
while True:
birthday = input()
if birthday == "0 #":
break
birthday_list.append(birthday)
for birthday in birthday_list:
print(birthday_check_2007(birthday=birthday))
GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07
1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.
github.com
'Programming > 코딩 1일 1문제' 카테고리의 다른 글
[BaekJoon] 26040번 : 특정 대문자를 소문자로 바꾸기 (Python) (0) | 2022.11.19 |
---|---|
[BaekJoon] 21567번 : 숫자의 개수 2 (Python) (0) | 2022.11.18 |
[BaekJoon] 6763번 : Speed fines are not fine! (Python) (0) | 2022.11.16 |
[BaekJoon] 21612번 : Boiling Water (Python) (0) | 2022.11.15 |
[BaekJoon] 5928번 : Contest Timing (Python) (0) | 2022.11.14 |