"정보올림피아드, 그냥 대회가 아닙니다 – 실력 있는 아이들이 선택하는 이유!"
- Coding Ground
- 4월 3일
- 2분 분량
오늘은
2025년도 한국정보올림피아드
준비와 관련된 소식입니다!
정보올림피아드는 한국에서 개최되는
정보 관련 대회 중에 가장 공신력 있고,
영향력이 있는 대회 입니다.
대회관련 자세한 정보 및 2025년도 주요 변경사항
2024년도 코딩그라운드 수상 기록은
아래 게시글을 확인해주세요!
올해 6월 1일로 예정된 정보 올림피아드 대회를 위해
우리 코딩그라운드의 학생들은
올해 초부터 열심히 준비중하고 있습니다.
단순 대회 수상이
코딩그라운드의 교육 지향점은 아니지만
즐겁게 코딩을 배우다보니
쑥쑥 길러진 평소 실력을 썪히기는 아까워서
다양한 알고리즘 문제풀이를 통한 약간의 준비를 거쳐
대회를 참가하고 있답니다!

실제 중등부 수업 사진입니다.
이번에 학생들과 함께 살펴본 문제는
백준 32069번 문제로
24년도 정보올림피아드 2차대회에
초등부 2번, 중등부 1번, 고등부 1번 으로 출제되었던 문제입니다

이 문제는 자료구조에 대한 지식와
탐색 알고리즘에 대한 이해가 필요한 문제였는데요

단순 문제 해결을 하는 것은
크게 어렵지 않지만
시간 및 메모리 제한을 지켜
전체 점수를 받기 위해서는
적절한 자료구조를 선택하고
연산 횟수를 제한하는 것이
중요한 문제였습니다
from collections import deque
from sys import stdin
input = stdin.readline
l, n, k = map(int, input().split())
coor = list(map(int, input().split()))
visit = set() # 이미 방문한 위치 저장
q = deque()
light = dict() # {위치: 어두운 정도}
for i in range(n):
visit.add(coor[i])
light[coor[i]] = 0
q.append(coor[i])
count = 0
while q:
i = q.popleft()
count += 1
if i - 1 >= 0 and i - 1 not in visit:
light[i - 1] = light[i] + 1
visit.add(i - 1)
q.append(i - 1)
if i + 1 <= l and i + 1 not in visit:
light[i + 1] = light[i] + 1
visit.add(i + 1)
q.append(i + 1)
if count == k: # k번째까지 출력할 것이기 때문에 k번 반복 후 종료
break
light = sorted(light.items(), key=lambda x:x[1]) # 딕셔너리를 value 기준으로 오름차순 정렬
for i in range (k) :
print(light[i][1])
해당문제의 L 값이

이렇게나 큰 값을 가질 수 있기 때문에,
전체에 대해 탐색을 하기보다는
K번째 값까지만 구하도록 연산하는 것이 포인트 였습니다
역시 문제를 읽을때 제한 사항과 서브태스크도
잘 체크해야 하겠죠?
또한 방문여부 체크를 위한 ' in ' 연산에서
set의 속도가 list 보다 빠르기 때문에
방문여부를 저장하는 자료구조로
set을 선택해주는 것이 좋습니다.
위 코드도 set을 사용 하지 않고 list를 쓸 경우
100점을 받지 못할 수도 있답니다
Deque를 사용하여
pop(0) 연산(popleft) 에서
평균 O(1)의 시간복잡도로 빠르게 처리하는 것도
중요 포인트 였습니다
문제를 풀어내는 것 그 자체도 중요하지만
고득점을 위해서는
어떤 재료를 골라, 어떤 조리방법으로
문제를 해결할 것인가를
꼭 고려해서 공부해야겠네요!
앞으로도 학생들과 함께
정보올림피아드 대회를
차근차근 준비해나가도록 하겠습니다
실제 시험 대비 모의고사 진행 등
관련 소식도 앞으로 쭉 업데이트 될 예정이니
많은 관심 부탁드려요!
블럭코딩(로블록스, 스크래치), 파이썬,
대회 및 입시 준비, 내신 대비까지!
코딩그라운드와 함께 하세요:)
문의사항은 언제든 편하게 연락 주세요!
(H : 010-9947-8349)
👇포항점 상담문의👇
코딩그라운드 포항점학원
경상북도 포항시 남구 효성로 25 2층 Coding Ground
코딩그라운드 본점
서울특별시 은평구 통일로83길 21 2층
코딩그라운드 대전유성점
대전광역시 유성구 원신흥남로41번길 16 303호
코딩그라운드 포항 펜타시티점
경상북도 포항시 북구 흥해읍 펜타시티단지로 25 202동 6층 607호
Comments