이번주 미션은 배운 내용 중 내가 선택한 알고리즘을 설명해보기이다. 근데 이번주 다른 일에 매진하느라 저번 미션 이후로 진도를 많이 나가지 못했다. (연속 학습 기록도 깨졌다 ㅠㅠ 다시 쌓아 올리면 되지) 그래서 갭체크에서 공부하세요 하고 추천 받았던 시뮬레이션 파트 진도를 나간 기념으로 정리해보기로 하였다. 코드트리에서 시뮬레이션 주제로 총 7가지 레슨이 제공되는데 그 중 6가지가 배열을 응용해서 푸는 문제였다.
1. 1차원 배열을 활용한 시뮬레이션 문제 풀기
1차원 배열을 응용한 문제 유형은 날짜와 시간 계산, 구간 칠하기, 최장 연속 부분 수열과 배열 기록이 있다. 최장 연속 부분 수열과 배열 기록은 문제 이름만봐도 배열을 활용해야겠구나 감이 오는데, 흐른 날짜 계산에 1차원 배열을 사용하는 것이 신기했다.
이 방식을 배우지 않은 과거의 나라면, 아래 코드와 같이 IF 문 + 반복문을 활용해서 계산했을 것이다.
# n월 m일에서 i월 j일까지 흐른 일수 계산하기
s_month, s_day, e_month, e_day = map(int, input().split())
elapsed_days = 0
while True:
if s_month == e_month and s_day == e_day:
break
elapsed_days += 1
s_day += 1
if (s_month == 1 or s_month == 3 or s_month == 5 or s_month == 7 or s_month == 8 or s_month == 10 or s_month == 12) and s_day > 31:
s_month += 1
day = 1
elif (s_month == 4 or s_month == 6 or s_month == 9 or s_month 11) and s_day > 30:
s_month += 1
day = 1
elif s_month == 2 and s_day > 28:
s_month += 1
day = 1
print(elapsed_days)
하지만 이렇게 되면 While 문 안에 조건문이 너무 복잡해진다. 특히 if문 안에 숫자를 잘못 입력하는 실수를 하거나 하나의 조건만 빠져도 동작이 어그러지게 된다. 디버깅할 때도 봐야할 조건이 많기 때문에 쉽지 않다. 이렇게 주어진 첫날부터 마지막 날짜까지 일일이 더하는 while+조건문 대신 배열을 이용해서 날짜 차이를 구하게 되면 좀 더 손쉽게 흐른 일수를 계산할 수 있다.
s_month, s_day, e_month, e_day = map(int, input().split())
# Please write your code here.
num_of_days = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
start_days = sum(num_of_days[:s_month]) + s_day
end_days= sum(num_of_days[:e_month]) + e_day
print(end_days - start_days + 1)
월(month) 숫자에 맞는 index에 일수를 저장한다. 1월 1일을 기준으로 두 날짜 모두 흐른 날짜를 배열 slicing과 sum 함수를 이용해서 계산하고 나머지 날짜를 더해준다. 두 날짜의 흐른 일수의 차이 + 1을 계산하게 되면 해당 날짜 포함 흐른 날짜 일수 차이를 계산할 수 있게 된다. num_of_days 만 관리하면 코드 디버깅이 쉽고, 코드 확장이 용이해짐을 알 수 있었다.
2. 2차원 배열을 활용한 시뮬레이션 문제 풀기
2차원 배열을 응용한 문제 유형은 사각형 칠하기와 dx, dy 테크닉이 있다. 사각형 칠하기 문제는 두 모서리로 주어진 왼쪽 아래 좌표와 오른쪽 위 좌표를 활용해서 면적이나 범위를 구하는 문제가 대부분 출제되었다. 주의해야할 점은 주어진 좌표 값 범위가 음수인 경우였다. python은 index 값으로도 음수값을 사용할 수 있긴 하지만, 범위의 최대최소 절대값으로 2차원 배열을 만들 경우 음수 좌표는 양수 좌표와 겹쳐버리는 일이 발생할 수 있기 때문에, offset을 주어 2차원 배열에 표시해야했다.
마지막으로 면적을 구할 때는 정의한 2차원 배열을 전부 탐색해서 구했는데, 런타임을 고려해서 더 효율적인 탐색 방법을 후반에 배울 수 있을지 이후 트레일 내용이 기대된다.
해당 글은 제가 직접 챌린지에 참여하며 배운 것과 느낀 점을 기록합니다.
이 글을 보고 챌린지 참여에 흥미를 느끼셨다면, 이 링크를 통해 확인해보세요
↓ ↓ ↓
Codetree: Master Coding Interviews - Data Structures & Algorithms
Master algorithms, ace tech interviews, and elevate your coding skills with Codetree's systematic curriculum and expert-crafted problem sets.
www.codetree.ai
저와 함께 우대 금리 받고, 원하는 경품에 더 많이 응모하시고자 한다면, 아래 링크를 사용해주세요.
↓ ↓ ↓
https://www.codetree.ai/ko/no-free-lunch-2026/?ref=UMT693
'남돈내배 > 2026_CodeTree_청약통장' 카테고리의 다른 글
| <코드리 청약 통장 챌린지 후기> 5회차 미션: 갭체크로 한 달 공부 점검 후기 (0) | 2026.06.08 |
|---|---|
| <코드트리 청약 통장 챌린지 후기> 4회차 미션: 북마크를 활용한 오답노트 만들기 (0) | 2026.06.01 |
| <코드트리 청약 통장 챌린지 후기> 3회차 미션: 알림톡으로 코테 독학 루틴 만들기 (0) | 2026.05.22 |
| <코드트리 청약 통장 챌린지 후기> 2회차 미션: 트레일 따라 시뮬레이션 공부 후기 (0) | 2026.05.17 |
| <코드트리 청약 통장 챌린지 후기> 1회차 미션: 코딩테스트 준비, 갭체크부터 시작하기 (0) | 2026.05.10 |


































