2024 한국정보올림피아드(KOI) 1차 대회 2교시 초등부: 두 판 사이의 차이
잔글편집 요약 없음 |
잔글 (→1. 등교 (초1)) |
||
| 9번째 줄: | 9번째 줄: | ||
제목 링크를 통해 문제를 확인해주세요. | 제목 링크를 통해 문제를 확인해주세요. | ||
=== | === 📄 문제 개요 === | ||
매일 아침 학교에 가는 상황을 컴퓨터 프로그램으로 해결해 보는 문제입니다. | |||
정올이에게는 여러 대의 '''버스 시간표'''와 학교에 늦지 않게 도착해야 하는 '''기준 시간(X)'''이 주어집니다. | |||
목표는 다음 두 가지입니다. | |||
''' | 1. 버스를 타고 학교에 도착하는 시간이 '''기준 시간'''을 넘기지 않아야 합니다. | ||
2. 조건을 만족하는 버스 중 '''가장 늦게 출발하는 버스'''를 선택해야 합니다. | |||
만약 어떤 버스를 타도 지각한다면 '''-1을 출력'''합니다. | |||
=== 💡 문제 풀이 시뮬레이션 === | |||
코드를 작성하기 전에, 먼저 주어진 상황을 분석해 봅니다. | |||
예를 들어 '''30분''' 안에는 학교에 도착해야 한다고 가정해 보겠습니다. | |||
{| class="wikitable sortable" | |||
| colspan="1" rowspan="1" |버스 번호 | |||
| colspan="1" rowspan="1" |출발 시간 | |||
| colspan="1" rowspan="1" |이동 시간 | |||
| colspan="1" rowspan="1" |🏫 학교 도착 시간 | |||
|- | |||
| colspan="1" rowspan="1" |1번 | |||
| colspan="1" rowspan="1" |10분 | |||
| colspan="1" rowspan="1" |15분 | |||
| colspan="1" rowspan="1" |10 + 15 = 25분 | |||
|- | |||
| colspan="1" rowspan="1" |2번 | |||
| colspan="1" rowspan="1" |15분 | |||
| colspan="1" rowspan="1" |20분 | |||
| colspan="1" rowspan="1" |15 + 20 = 35분 | |||
|- | |||
| colspan="1" rowspan="1" |3번 | |||
| colspan="1" rowspan="1" |20분 | |||
| colspan="1" rowspan="1" |10분 | |||
| colspan="1" rowspan="1" |20 + 10 = 30분 | |||
|} | |||
과정을 차례대로 살펴보면 다음과 같습니다. | |||
1. 각 버스의 도착 시간(출발 시간 + 이동 시간)을 계산합니다. | |||
2. 도착 시간이 30분을 초과하는 2번 버스는 선택지에서 제외합니다. | |||
3. 남은 1번, 3번 버스 중 '''가장 늦게 출발'''하는 3번 버스(20분 출발)가 최적의 선택이 됩니다. | |||
복잡한 수학 공식 없이, 도착 시간을 계산하여 지각 여부를 판별하고 통과한 것 중 가장 큰 값을 고르면 됩니다. | |||
=== 💻 '''코드 구현 - 하나씩 모두 비교하기''' === | === 💻 '''코드 구현 - 하나씩 모두 비교하기''' === | ||
<syntaxhighlight lang="python3" line="1"> | <syntaxhighlight lang="python3" line="1"> | ||
n = | n, x = map(int, input().split()) | ||
ans = | ans = -1 # 초기값을 -1로 설정하여 무조건 지각하는 경우를 고려 | ||
for i in range( | for i in range(n): | ||
s, t = map(int, input().split()) | |||
if | if s + t <= x: # 지각하지 않을 수 있다면 | ||
ans = | if ans < s: # 가장 늦게 오는 버스 시간 업데이트 | ||
ans = s | |||
print(ans) | print(ans) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== 📊 '''정답률''' === | === 📊 '''정답률''' === | ||
[[파일: | [[파일:2024KOI등교1.png]] | ||
== '''[https://codersit.co.kr/oj/problems/1881 2. 두 배 (초2/중1)]''' == | == '''[https://codersit.co.kr/oj/problems/1881 2. 두 배 (초2/중1)]''' == | ||
2026년 4월 13일 (월) 19:36 판
한국 정보올림피아드(KOI) 기출 문제 풀이과정을 수록합니다.

1. 등교 (초1)
제목 링크를 통해 문제를 확인해주세요.
📄 문제 개요
매일 아침 학교에 가는 상황을 컴퓨터 프로그램으로 해결해 보는 문제입니다.
정올이에게는 여러 대의 버스 시간표와 학교에 늦지 않게 도착해야 하는 기준 시간(X)이 주어집니다.
목표는 다음 두 가지입니다.
1. 버스를 타고 학교에 도착하는 시간이 기준 시간을 넘기지 않아야 합니다.
2. 조건을 만족하는 버스 중 가장 늦게 출발하는 버스를 선택해야 합니다.
만약 어떤 버스를 타도 지각한다면 -1을 출력합니다.
💡 문제 풀이 시뮬레이션
코드를 작성하기 전에, 먼저 주어진 상황을 분석해 봅니다.
예를 들어 30분 안에는 학교에 도착해야 한다고 가정해 보겠습니다.
| 버스 번호 | 출발 시간 | 이동 시간 | 🏫 학교 도착 시간 |
| 1번 | 10분 | 15분 | 10 + 15 = 25분 |
| 2번 | 15분 | 20분 | 15 + 20 = 35분 |
| 3번 | 20분 | 10분 | 20 + 10 = 30분 |
과정을 차례대로 살펴보면 다음과 같습니다.
1. 각 버스의 도착 시간(출발 시간 + 이동 시간)을 계산합니다.
2. 도착 시간이 30분을 초과하는 2번 버스는 선택지에서 제외합니다.
3. 남은 1번, 3번 버스 중 가장 늦게 출발하는 3번 버스(20분 출발)가 최적의 선택이 됩니다.
복잡한 수학 공식 없이, 도착 시간을 계산하여 지각 여부를 판별하고 통과한 것 중 가장 큰 값을 고르면 됩니다.
💻 코드 구현 - 하나씩 모두 비교하기
n, x = map(int, input().split())
ans = -1 # 초기값을 -1로 설정하여 무조건 지각하는 경우를 고려
for i in range(n):
s, t = map(int, input().split())
if s + t <= x: # 지각하지 않을 수 있다면
if ans < s: # 가장 늦게 오는 버스 시간 업데이트
ans = s
print(ans)
📊 정답률
2. 두 배 (초2/중1)
제목 링크를 통해 문제를 확인해주세요. 추가 예정
3. 반품 회수 (초3/고1)
추가 예정
