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.

Exercise series

[5월 9일] 1번 문제
May 16, 2025 16:59

문제: 승훈이는 어디로 갈까?

승훈이는 지금 네모난 운동장 안에 있어요. 운동장은 다음과 같은 규칙을 가지고 있어요:

  • 운동장의 가로 길이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

이 네 가지 중 가장 작은 값이 승훈이가 갈 수 있는 가장 짧은 거리예요!

[5월 9일] 2번 문제
May 16, 2025 16:59

문제: 승훈이의 나이는 몇 살일까?

우리나라에는 나이를 세는 방법이 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

✅ 출력 형식

세 줄로 출력해요.

  1. 첫 줄: 만 나이
  2. 둘째 줄: 세는 나이
  3. 셋째 줄: 연 나이

예시 출력:

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월 9일] 3번 문제
May 16, 2025 16:59

문제: 누리의 알람 시계

누리는 매일 아침 알람 소리를 듣고 일어나요. 하지만 알람이 울려도 “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시가 돼요.

[5월 9일] 4번 문제
May 16, 2025 16:59

문제: 캥거루 점프 놀이

사막 위에 세 마리의 캥거루가 줄을 따라 서 있어요. 줄은 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 설명

  1. 맨 오른쪽(9)이 3과 5 사이인 4로 → 위치: 3, 4, 5
  2. 맨 왼쪽(3)이 4와 5 사이인 아무 데(…4가 비어 있지 않으니…)

    • 사실 첫 점프는 3→8이 더 멀리! 하지만 항상 가능한 점프를 최대화하려면
    • 매번 더 넓은 간격 쪽에서 한 칸만 들어가는 것이 좋아요.
  3. 실제 최대로 움직이는 방법을 따라가면 3번까지 가능해요.

출력 예시 2

3

💡 힌트

  • 두 캥거루 사이 간격 = 차이 B - A 또는 C - B
  • 한 번 움직일 때마다 가장 큰 간격 사이에서 1만큼 좁혀요.
  • 그래서 최대 움직임 수 = max(B - A, C - B) - 1

[5월 9일] 5번 문제
May 16, 2025 16:59

문제: 분수를 가장 간단한 모양으로 바꿔 볼까요?

분수를 입력하면 분자와 분모가 더 이상 똑같은 수로 나눠지지 않도록, 최대한 단순한 분수로 바꿔 보아요.


📌 설명

  1. 분자와 분모를 같이 나눌 수 있는 모든 수를 찾아보세요.
  2. 그중에서 가장 큰 수로 분자와 분모를 나누면, 더는 똑같은 수로 나눌 수 없는 분수가 돼요.
  3. 예를 들어 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. 분자와 분모를 각각 1부터 작은 수까지 모두 나누어 보고,
  2. 두 목록에서 공통으로 등장하는 수 중에서 가장 큰 수를 찾으면 돼요.
  3. 그 수로 분자와 분모를 나누면 간단한 분수가 완성됩니다!