728x90
SMALL
백준 문제 풀이: 33612 [SW 마에스트로 입학식]
문제 링크: https://www.acmicpc.net/problem/33612
문제 설명:
SW 마에스트로 입학식은 매년 7개월마다 돌아오며, 첫 입학식은 2024년 8월입니다.
입력으로 주어지는 정수 n
에 대해, n번째 입학식이 열리는 연도와 월을 출력하는 문제입니다.
예를 들어,
- 1번째 입학식 → 2024년 8월
- 2번째 입학식 → 2025년 3월
- 3번째 입학식 → 2025년 10월
이처럼 7개월 단위로 다음 입학식 날짜가 순차적으로 결정됩니다.
문제 해결 코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int y = 2024; // 시작 연도
int m = 8 + 7 * (n - 1); // 총 누적 월수 계산
// 누적 월이 몇 년 뒤인지 계산
int d = (m % 12 == 0) ? m / 12 - 1 : m / 12;
m -= (d * 12); // 해당 월 계산
printf("%d %d", y + d, m); // 연도 및 월 출력
return 0;
}
예제 입력:
5
예제 출력:
2026 5
코드 설명
- 핵심 아이디어: 2024년 8월부터 시작해 7개월 간격으로 다음 입학식이 열리므로 누적 월로 접근
- 구현 세부사항:
m = 8 + 7*(n-1)
을 통해 시작 월로부터 누적 개월 수 계산d
는 몇 년이 더해지는지를 의미하며,m
을 12로 나눠서 계산- 연도는
2024 + d
, 월은 12를 넘지 않도록m - d*12
처리
- 시간 복잡도: O(1), 단순한 수학 계산
결과
7개월 주기로 반복되는 이벤트를 계산하는 수학적 문제로, 간단한 월-연도 변환 로직을 연습하기 좋은 문제입니다. datetime 관련 계산을 수동으로 구현해보는 데 유용합니다.
다른 구현 방법이나 확장 아이디어가 있다면 댓글로 공유해주세요!
728x90
LIST
'BAEKJOON > 수학' 카테고리의 다른 글
백준 32651번 [인간은 무엇인가](C++) -yes6686- 티스토리 (0) | 2025.04.03 |
---|---|
백준 32684번 [장기](C++) -yes6686- 티스토리 (0) | 2025.04.02 |
백준 11023번 [더하기 3](C++) -yes6686- 티스토리 (0) | 2025.03.27 |
백준 11134번 [쿠키애호가](C++) -yes6686- 티스토리 (0) | 2025.03.26 |
백준 11312번 [삼각 무늬-2](C++) -yes6686- 티스토리 (0) | 2025.02.16 |