2023 한국정보올림피아드(KOI) 1차 대회 2교시 초등부

아두위키 : Arduwiki


한국 정보올림피아드(KOI) 기출 문제 풀이과정을 수록합니다.

한국정보올림피아드(KOI) 기출 문제 풀이 모음
한국정보올림피아드(KOI) 기출 문제 풀이 모음


1. 크림빵 (초1)

제목 링크를 통해 문제를 확인해주세요.

📄 문제 개요

KOI 빵집에서 총 N * K개의 빵을 만들었습니다. 이 빵들을 일렬로 늘어놓고 앞에서부터 K개씩 묶어서 판매하려고 합니다.

  • 크림이 있는 빵은 1, 크림이 없는 빵은 0으로 표시됩니다.
  • 단, 한 묶음 안에 크림이 없는 빵(0)이 P개 이상 있다면 그 묶음은 불량품으로 간주되어 팔 수 없습니다.

우리는 판매 가능한 빵 묶음의 총 개수를 구해야 합니다.


💡 문제 풀이 시뮬레이션

이 문제를 해결하기 위한 핵심은 일렬로 늘어선 데이터를 일정한 간격(K)으로 정확하게 나누어 검사하는 것입니다.

예를 들어 빵이 3개씩 한 묶음(K=3), 크림 없는 빵이 1개 미만이어야 판매 가능하다고 상상해 봅시다.

주어진 빵의 데이터를 K개씩 끊어서 크림 없는 빵의 개수를 세어보면 판매가능한 빵 묶음 개수를 확인할 수 있습니다.



💻 코드 구현 - K개씩 끊어서 확인하기

# N: 묶음 수, K: 묶음당 빵의 수, P: 불량품 기준 개수
n, k, p = map(int, input().split())
breads = list(map(int, input().split()))

ans = 0

# 0부터 전체 빵 개수(N*K)까지 K칸씩 건너뛰며 묶음의 시작점(i) 설정
for i in range(0, n * k, k):
    nocream = 0  # 현재 묶음의 크림 없는 빵(0) 개수를 셀 변수
    
    # 시작점(i)부터 i+k 직전까지 빵을 하나씩 검사
    for j in range(i, i + k):
        if breads[j] == 0:
            nocream += 1  # 크림이 없으면 개수 증가
            
    # 해당 묶음 안의 불량품이 P개 미만이라면 판매 가능
    if nocream < p:
        ans += 1

print(ans)


전체 빵을 K개씩 끊어 순회하면서 크림없는 빵의 개수를 세고, 불량 여부를 판단하는 것을 중첩 반복의 형태로 표현했습니다.

이번 문제는 빵의 최대 개수(1 <= N <= 50)가 크지 않기 때문에 이 방법으로 충분히 해결 가능합니다.


📊 정답률




2. 대피소 (초2/고1)

제목 링크를 통해 문제를 확인해주세요.


3. 아이템 획득 (초3)

추가 예정