2025년 경기모바일과학고등학교 1학기 전공심화 자바프로그래밍반 (2025–2026)
fivestar · Gyeonggi Office of Education
You are not a member of this course.
Your registration must be approved by a course administrator before you can access this course.
문제: 승훈이는 어디로 갈까?
승훈이는 지금 네모난 운동장 안에 있어요. 운동장은 다음과 같은 규칙을 가지고 있어요:
- 운동장의 가로 길이는
w
미터 - 운동장의 세로 길이는
h
미터 - 운동장의 왼쪽 아래 모서리가 시작점이에요 (즉, (0, 0)에서 시작해요)
승훈이는 지금 운동장 안의 어떤 위치에 서 있어요. 그 위치는 다음과 같이 주어져요:
- 왼쪽 벽에서
x
미터 떨어져 있고 - 아래쪽 벽에서
y
미터 떨어져 있어요
승훈이는 운동장의 벽 중에서 가장 가까운 곳으로 가고 싶어요. 운동장의 네 벽은 다음과 같아요:
- 왼쪽 벽
- 오른쪽 벽
- 아래쪽 벽
- 위쪽 벽
📐 운동장 예시 (텍스트 시각화)
아래는 운동장을 위에서 본 모습이에요.
S
는 승훈이가 있는 위치예요.
위쪽 벽 (h)
┌───────────────┐
│ │
│ S ← 승훈이 위치 │
│ │
└───────────────┘
왼쪽 벽 (0) 오른쪽 벽 (w)
승훈이는 네 벽 중 가장 가까운 벽까지 걸어가려고 해요. 그 거리의 최솟값을 구하는 프로그램을 만들어 보세요.
🔢 입력 형식
x y w h
x
: 왼쪽 벽에서의 거리y
: 아래쪽 벽에서의 거리w
: 운동장의 가로 길이h
: 운동장의 세로 길이
✅ 출력 형식
- 승훈이가 갈 수 있는 가장 짧은 거리를 출력하세요.
🧪 입력 예시
6 2 10 3
🧾 출력 예시
1
💡 힌트
승훈이가 네 벽까지 가는 거리는 다음과 같이 계산할 수 있어요:
- 왼쪽 벽까지 거리:
x
- 오른쪽 벽까지 거리:
w - x
- 아래쪽 벽까지 거리:
y
- 위쪽 벽까지 거리:
h - y
이 네 가지 중 가장 작은 값이 승훈이가 갈 수 있는 가장 짧은 거리예요!
문제: 승훈이의 나이는 몇 살일까?
우리나라에는 나이를 세는 방법이 3가지나 있어요! 그걸 알아보자!
👶 1. 만 나이
- 태어난 날이 지나야 1살이 돼요.
- 처음 태어났을 땐 0살이에요.
- 생일이 지나면 1살씩 더해져요.
예를 들어, 2003년 3월 5일에 태어난 사람은 2004년 3월 4일까지는 0살이고, 2004년 3월 5일부터 1살이에요.
👦 2. 세는 나이 (옛날에 많이 썼던 방식이에요)
- 태어나자마자 1살!
- 해가 바뀔 때마다 1살씩 더해요.
예를 들어, 2003년 3월 5일에 태어났다면 2003년에는 1살, 2004년 1월 1일이 되면 2살이에요.
👨 3. 연 나이 (현재는 쓰이지 않지만 법에서 사용하던 방식이에요)
- 태어난 해를 기준으로 해요.
- 그냥 현재 연도 - 태어난 연도예요.
예를 들어, 2003년에 태어나고 2004년이면 연 나이는 1살이에요.
🎯 문제 설명
어떤 사람이 태어난 날과 “오늘 날짜”가 주어졌을 때,
그 사람의 나이를 세 가지 방식으로 구하는 프로그램을 만들어 보세요!
🔢 입력 형식
두 줄로 입력이 주어져요.
- 첫 번째 줄: 태어난 연도, 월, 일
- 두 번째 줄: 오늘 날짜의 연도, 월, 일
예시:
2003 3 5
2004 1 1
✅ 출력 형식
세 줄로 출력해요.
- 첫 줄: 만 나이
- 둘째 줄: 세는 나이
- 셋째 줄: 연 나이
예시 출력:
0
2
1
💡 힌트
만 나이 = 기준연도 - 태어난연도
→ 그리고 생일이 아직 안 지났으면 -1
세는 나이 = 기준연도 - 태어난연도 + 1
연 나이 = 기준연도 - 태어난연도
🧪 입력 예시 1
2003 3 5
2003 4 5
🧾 출력 예시 1
0
1
0
🧪 입력 예시 2
2005 1 1
2007 1 1
🧾 출력 예시 2
2
3
2
문제: 누리의 알람 시계
누리는 매일 아침 알람 소리를 듣고 일어나요. 하지만 알람이 울려도 “5분만 더…” 하고 자다가 자주 지각을 해요.
그래서 친구 성민이가 좋은 방법을 알려줬어요.
🕓 성민이의 꿀팁!
알람 시간을 45분 더 일찍 맞춰 놓는 거야!
예를 들어, 알람이 원래 10시 10분에 울린다면, 45분 더 일찍, 즉 9시 25분에 울리도록 바꾸는 거예요.
📌 문제 설명
누리가 원래 맞춰둔 알람 시간이 주어져요. 성민이의 방법을 쓰면, 몇 시 몇 분으로 알람을 다시 설정해야 할까요?
🔢 입력 형식
H M
H
: 시 (0부터 23까지)M
: 분 (0부터 59까지)
입력은 한 줄이며, 24시간 시계를 사용해요. (예: 자정은 0시 0분, 밤 11시는 23시)
✅ 출력 형식
- 성민이의 방법으로 바꾼 새로운 알람 시간을
시 분
형식으로 출력하세요.
🧪 입력 예시 1
10 10
🧾 출력 예시 1
9 25
🧪 입력 예시 2
0 30
🧾 출력 예시 2
23 45
🧪 입력 예시 3
23 40
🧾 출력 예시 3
22 55
💡 힌트
- 알람 시간에서 45분을 빼야 해요!
- 그런데 0시 0분보다 앞으로 가면 전날 23시로 돌아가야 해요.
- 시(hour)가 0일 때, 1시간을 빼면 23시가 돼요.
문제: 캥거루 점프 놀이
사막 위에 세 마리의 캥거루가 줄을 따라 서 있어요. 줄은 0에서 100 사이의 숫자가 적힌 한 줄(수직선)이에요. 세 마리 캥거루는 서로 다른 위치에 서 있고, 한 위치에 두 마리가 모일 수 없어요.
🎲 한 번 움직이는 방법
- 바깥쪽에 있는 캥거루(맨 왼쪽 또는 맨 오른쪽) 중 한 마리가
- 다른 두 캥거루 사이의 빈 곳으로 한 번에 점프해요.
- 점프할 때는 정수 위치여야 하고, 이미 누군가 서 있으면 못 가요.
예를 들어, 위치가 2, 5, 7이라면
- 왼쪽 캥거루(2)는 5와 7 사이인 6으로,
- 오른쪽 캥거루(7)는 2와 5 사이인 3 또는 4로 한 번에 점프할 수 있어요.
❓ 문제
캥거루들이 더 이상 움직일 수 없을 때까지, 최대 몇 번 움직일 수 있을까요?
🔢 입력 형식
A B C
A
,B
,C
는 캥거루의 시작 위치- 0 < A < B < C < 100
- 모두 정수예요.
✅ 출력 형식
- 캥거루가 최대로 움직일 수 있는 횟수를 하나의 정수로 출력하세요.
🧪 입력 예시 1
2 3 5
예시 1 설명
- 처음 위치는 2, 3, 5
- 맨 왼쪽(2)이 3과 5 사이인 4로 점프하면 위치가 3, 4, 5가 돼요.
- 그 뒤에는 두 칸 사이에 빈 곳이 없어서 더 이상 못 움직여요.
- 움직인 횟수 = 1
출력 예시 1
1
🧪 입력 예시 2
3 5 9
예시 2 설명
- 맨 오른쪽(9)이 3과 5 사이인 4로 → 위치: 3, 4, 5
-
맨 왼쪽(3)이 4와 5 사이인 아무 데(…4가 비어 있지 않으니…)
- 사실 첫 점프는 3→8이 더 멀리! 하지만 항상 가능한 점프를 최대화하려면
- 매번 더 넓은 간격 쪽에서 한 칸만 들어가는 것이 좋아요.
- 실제 최대로 움직이는 방법을 따라가면 3번까지 가능해요.
출력 예시 2
3
💡 힌트
- 두 캥거루 사이 간격 = 차이
B - A
또는C - B
- 한 번 움직일 때마다 가장 큰 간격 사이에서 1만큼 좁혀요.
- 그래서 최대 움직임 수 =
max(B - A, C - B) - 1
문제: 분수를 가장 간단한 모양으로 바꿔 볼까요?
분수를 입력하면 분자와 분모가 더 이상 똑같은 수로 나눠지지 않도록, 최대한 단순한 분수로 바꿔 보아요.
📌 설명
- 분자와 분모를 같이 나눌 수 있는 모든 수를 찾아보세요.
- 그중에서 가장 큰 수로 분자와 분모를 나누면, 더는 똑같은 수로 나눌 수 없는 분수가 돼요.
-
예를 들어
8/12
를 보면- 8을 나누는 수: 1, 2, 4, 8
- 12를 나누는 수: 1, 2, 3, 4, 6, 12
- 공통으로 나누는 수는 1, 2, 4 → 가장 큰 수는 4
→
8 ÷ 4
= 2,12 ÷ 4
= 3 → 결과:2/3
🔢 입력 형식
A B
A
: 분자 (−1,000,000 이상 1,000,000 이하 정수)B
: 분모 (1 이상 1,000,000 이하 정수)
✅ 출력 형식
- 분자를
/
분모 형태로 출력하세요. - 분자가 0이면 항상
0/1
로 출력합니다.
🧪 예시 입력 1
8 12
🧾 예시 출력 1
2/3
🧪 예시 입력 2
-6 9
🧾 예시 출력 2
-2/3
🧪 예시 입력 3
0 5
🧾 예시 출력 3
0/1
💡 풀이 팁
- 분자와 분모를 각각 1부터 작은 수까지 모두 나누어 보고,
- 두 목록에서 공통으로 등장하는 수 중에서 가장 큰 수를 찾으면 돼요.
- 그 수로 분자와 분모를 나누면 간단한 분수가 완성됩니다!