Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 맥북
- 프로그래머스
- 코로나19
- 자연어처리
- 백준
- ChatGPT
- 편스토랑
- ubuntu
- 캐치카페
- 우분투
- 데이콘
- Real or Not? NLP with Disaster Tweets
- hackerrank
- Baekjoon
- leetcode
- AI 경진대회
- 프로그래머스 파이썬
- 편스토랑 우승상품
- 파이썬
- SW Expert Academy
- Git
- github
- PYTHON
- 금융문자분석경진대회
- 더현대서울 맛집
- programmers
- dacon
- gs25
- Kaggle
- Docker
Archives
- Today
- Total
솜씨좋은장씨
[BaekJoon] 9948번 : Have you had your birthday yet? (Python) 본문
Programming/코딩 1일 1문제
[BaekJoon] 9948번 : Have you had your birthday yet? (Python)
솜씨좋은장씨 2022. 11. 17. 11:17728x90
반응형
코딩 1일 1문제! 오늘의 문제는 생일을 맞아 birthday 가 들어간 백준의 Have you had your birthday yet? 입니다.
🧑🏻💻 문제 풀이
생일을 입력받으면 ( 형식 : 일(숫자) 월(문자) / 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))
'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 |
Comments