
함수를 기능별로 나누어
작성하는게 중요하다고 느껴지는 주였다.
잘 관리할 수록
가독성, 코드 작성 등 장점이 많았다.
비교적 간단한 문제들 부터
꾸준히 연습해야
복잡한 문제들에도
함수를 잘 관리할 수 있을 것 같다.
학습내용
그 계절, 그 날

y, m , d = map(int, input().split())
#윤년 확인
def check_leap_year(y):
if y % 4 == 0 and y % 100 != 0:
return True
elif y % 4 == 0 and y % 100 == 0 and y % 400 == 0:
return True
return False
# 존재하는지 확인
def check_day(y, m, d):
end31 = [1,3,5,7,8,10,12]
end30 = [4,6,9,11]
if m == 2:
if check_leap_year(y):
if d < 30:
return True
else:
if d < 29:
return True
elif m in end31:
if d < 32:
return True
elif m in end30:
if d < 31:
return True
return False
# 계절확인
def check_season(m):
if 3 <= m <= 5:
return "Spring"
elif 6 <= m <= 8:
return "Summer"
elif 9 <= m <= 11:
return "Fall"
else:
return "Winter"
if check_day(y, m, d):
print(check_season(m))
else:
print(-1)
이 문제는 윤년, 계절
그리고 달력에 존재 유무 총 3가지를 판단하는 문제다.
따라서 코드에 사용되는 함수는 3가지로 분류할 수 있다.
1. 달력에 존재하는 날인지 확인 - check_day()
2. 윤년 확인 - check_leap_year()
3. 계절 확인 - check_season()
check_day()
어떤 달이냐에 따라서 입력 받은 날짜가
그 달에 속하는지 체크한다.
31일 까지 있는 달 - 1, 3, 5, 7, 8, 10, 12
30일 까지 있는 달 - 4, 6, 9, 11
28일, 29일 까지 있는 달 - 2
위의 내용을 리스트로 담아서 관리한다.
입력 형식의 경우 1 ≤ D ≤ 31이다.
2월30일이 입력되는 경우 False가 되어야한다.
check_leap_year()
<윤년인 경우 - 29일까지 있는 해>
- 4의 배수이면서 100의 배수가 아닌 경우
👉y % 4 == 0 and y % 100 != 0
- 4의 배수이면서 100의 배수이고, 400의 배수인 경우
👉y % 4 == 0 and y % 100 == 0 and y % 400 == 0
check_season()
3월 ~ 5월 👉 봄
6월 ~ 8월 👉 여름
9월 ~ 11월 👉 가을
12 ~ 2월 👉 겨울
함수를 이용한 369 게임

def check_369(m):
if '3' in str(m):
return True
if '6' in str(m):
return True
if '9' in str(m):
return True
else:
return False
def check_num(n):
if n % 3 == 0 or check_369(n):
return(True)
else:
False
a, b = map(int, input().split())
cnt = 0
for i in range(a, b+1):
if check_num(i):
cnt += 1
print(cnt)
3, 6, 9가 들어가 포함된 숫자인지
체크하는 함수와
3의 배수를 확인하는 함수
총 2가지를 만든다.
check_369()
3, 6, 9가 들어있는지 확인하기 위해
입력받은 수를 string형태로 바꾸고 in을 사용했다.
while n > 0:
if n % 10 == 3 or n % 10 == 6 or n % 10 == 9:
return True
n //= 10
return False
in을 사용하지 않는 방법은 일의 자리가
3, 6, 9인지 확인한다.
일의 자리를 확인하기 위해서는
확인하고자 하는 수를 10으로 나누면된다.
숫자가 십의자리 이상인 경우
일의 자리를 확인한다.
이때 3, 6, 9가 있다면 더 이상의 연산을 멈추고
return True한다.
True를 할 수 없다면,
확인한 일의 자리를 제외하여 다음 수를 확인해야한다.
이는 10으로 나눈 몫을 저장하는 방법을 쓰면된다.
그러면 십의 자리가 일의 자리로 변경된다.
'CODING TEST > Code Tree' 카테고리의 다른 글
| [코드트리 조별과제] 4주차 (정렬된 숫자 위치 알아내기 / DateTime to DateTime) (0) | 2024.08.11 |
|---|---|
| [코드트리 조별과제] 3주차 정리(출력결과 18 / 출력결과 29 / 재귀함수를 이용한 최소공배수) (0) | 2024.08.04 |
| [코드트리 조별과제] 1주차 정리 (최대공약수 구하기/ 최소공배수 구하기/ 출력결과20) (0) | 2024.07.21 |
| [코드트리 챌린지] 8주차 - 마무리와 시작(코드네임, 사는 지역, 비오는 날) (0) | 2023.10.30 |
| [코드트리 챌린지] 7주자 - 계속해서 나아가(용량이 다른 3개의 물통, 십진수와 이진수) (0) | 2023.10.20 |

함수를 기능별로 나누어
작성하는게 중요하다고 느껴지는 주였다.
잘 관리할 수록
가독성, 코드 작성 등 장점이 많았다.
비교적 간단한 문제들 부터
꾸준히 연습해야
복잡한 문제들에도
함수를 잘 관리할 수 있을 것 같다.
학습내용
그 계절, 그 날

y, m , d = map(int, input().split())
#윤년 확인
def check_leap_year(y):
if y % 4 == 0 and y % 100 != 0:
return True
elif y % 4 == 0 and y % 100 == 0 and y % 400 == 0:
return True
return False
# 존재하는지 확인
def check_day(y, m, d):
end31 = [1,3,5,7,8,10,12]
end30 = [4,6,9,11]
if m == 2:
if check_leap_year(y):
if d < 30:
return True
else:
if d < 29:
return True
elif m in end31:
if d < 32:
return True
elif m in end30:
if d < 31:
return True
return False
# 계절확인
def check_season(m):
if 3 <= m <= 5:
return "Spring"
elif 6 <= m <= 8:
return "Summer"
elif 9 <= m <= 11:
return "Fall"
else:
return "Winter"
if check_day(y, m, d):
print(check_season(m))
else:
print(-1)
이 문제는 윤년, 계절
그리고 달력에 존재 유무 총 3가지를 판단하는 문제다.
따라서 코드에 사용되는 함수는 3가지로 분류할 수 있다.
1. 달력에 존재하는 날인지 확인 - check_day()
2. 윤년 확인 - check_leap_year()
3. 계절 확인 - check_season()
check_day()
어떤 달이냐에 따라서 입력 받은 날짜가
그 달에 속하는지 체크한다.
31일 까지 있는 달 - 1, 3, 5, 7, 8, 10, 12
30일 까지 있는 달 - 4, 6, 9, 11
28일, 29일 까지 있는 달 - 2
위의 내용을 리스트로 담아서 관리한다.
입력 형식의 경우 1 ≤ D ≤ 31이다.
2월30일이 입력되는 경우 False가 되어야한다.
check_leap_year()
<윤년인 경우 - 29일까지 있는 해>
- 4의 배수이면서 100의 배수가 아닌 경우
👉y % 4 == 0 and y % 100 != 0
- 4의 배수이면서 100의 배수이고, 400의 배수인 경우
👉y % 4 == 0 and y % 100 == 0 and y % 400 == 0
check_season()
3월 ~ 5월 👉 봄
6월 ~ 8월 👉 여름
9월 ~ 11월 👉 가을
12 ~ 2월 👉 겨울
함수를 이용한 369 게임

def check_369(m):
if '3' in str(m):
return True
if '6' in str(m):
return True
if '9' in str(m):
return True
else:
return False
def check_num(n):
if n % 3 == 0 or check_369(n):
return(True)
else:
False
a, b = map(int, input().split())
cnt = 0
for i in range(a, b+1):
if check_num(i):
cnt += 1
print(cnt)
3, 6, 9가 들어가 포함된 숫자인지
체크하는 함수와
3의 배수를 확인하는 함수
총 2가지를 만든다.
check_369()
3, 6, 9가 들어있는지 확인하기 위해
입력받은 수를 string형태로 바꾸고 in을 사용했다.
while n > 0:
if n % 10 == 3 or n % 10 == 6 or n % 10 == 9:
return True
n //= 10
return False
in을 사용하지 않는 방법은 일의 자리가
3, 6, 9인지 확인한다.
일의 자리를 확인하기 위해서는
확인하고자 하는 수를 10으로 나누면된다.
숫자가 십의자리 이상인 경우
일의 자리를 확인한다.
이때 3, 6, 9가 있다면 더 이상의 연산을 멈추고
return True한다.
True를 할 수 없다면,
확인한 일의 자리를 제외하여 다음 수를 확인해야한다.
이는 10으로 나눈 몫을 저장하는 방법을 쓰면된다.
그러면 십의 자리가 일의 자리로 변경된다.
'CODING TEST > Code Tree' 카테고리의 다른 글
| [코드트리 조별과제] 4주차 (정렬된 숫자 위치 알아내기 / DateTime to DateTime) (0) | 2024.08.11 |
|---|---|
| [코드트리 조별과제] 3주차 정리(출력결과 18 / 출력결과 29 / 재귀함수를 이용한 최소공배수) (0) | 2024.08.04 |
| [코드트리 조별과제] 1주차 정리 (최대공약수 구하기/ 최소공배수 구하기/ 출력결과20) (0) | 2024.07.21 |
| [코드트리 챌린지] 8주차 - 마무리와 시작(코드네임, 사는 지역, 비오는 날) (0) | 2023.10.30 |
| [코드트리 챌린지] 7주자 - 계속해서 나아가(용량이 다른 3개의 물통, 십진수와 이진수) (0) | 2023.10.20 |