2022 KOI 1교시 중등부 풀이 정리

이 문서는 2022 - 중등부 기출문제를 바탕으로, 정답 자료를 중학생 기준의 학습용 풀이 노트로 다시 정리한 문서입니다. 원본이 정답 PDF이므로, 계산형 문항은 직접 이유를 보강했고 구성형 문항은 공식 정답 동작을 따라가며 설명했습니다.

1. 최대 거리 이진 트리

문제 한눈에 보기

노드 의 전위 순회 결과가 일 때, 노드 사이 거리의 최댓값을 묻는 문제입니다.

핵심 개념

전위 순회는 루트 -> 왼쪽 서브트리 -> 오른쪽 서브트리 순서입니다.

왜 이 생각을 먼저 해야 하는지

가능한 트리 모양이 아주 많아 보여도, 전위 순회 조건이 왼쪽과 오른쪽 서브트리의 위치를 강하게 제한합니다.

단계별 풀이

  1. 루트는 맨 앞의 입니다.
  2. 그다음 의 왼쪽 서브트리와 오른쪽 서브트리로 나뉘어야 합니다.
  3. 거리 를 가장 크게 하려면 은 한쪽, 는 다른 쪽에 두는 것이 유리합니다.
  4. 예를 들어 의 왼쪽 자식이 , 오른쪽 자식이 , 그리고 의 자식이 인 트리를 만들 수 있습니다.
  5. 그러면 거리 입니다.
  6. 정점이 네 개뿐이므로 이보다 더 긴 거리는 만들 수 없습니다.

헷갈리기 쉬운 점

전위 순회는 형제 순서를 완전히 정하진 않지만, 루트 다음에 나오는 덩어리들이 어떤 서브트리에 들어가는지는 제한합니다.

2. 달리기

문제 한눈에 보기

다섯 명의 순위 조건이 주어질 때 3등이 누구인지 찾는 문제입니다.

A

핵심 개념

등수의 상대관계를 먼저 정리하면 완전한 순서를 다 쓰지 않아도 답이 나옵니다.

왜 이 생각을 먼저 해야 하는지

조건이 적을 때는 “누가 반드시 위/아래인지”만으로도 한 사람의 위치가 고정될 수 있습니다.

단계별 풀이

  1. B보다 순위가 낮은 사람은 없다에서 B는 최하위, 즉 등입니다.
  2. EBA 사이이므로 A보다 낮고 B보다는 높습니다.
  3. AC보다 낮고, DA보다 높습니다.
  4. 따라서 A보다 위에는 C, D 두 명이 있고, 아래에는 E, B 두 명이 있습니다.
  5. 그래서 A는 정확히 등입니다.

헷갈리기 쉬운 점

“순위가 낮다”는 숫자가 더 큰 쪽, 즉 더 못한 등수입니다.

3. 두 트리 연결하기

문제 한눈에 보기

두 트리를 길이 0인 간선 하나로 이어서 A-B 경로 길이가 5가 되게 하는 연결을 찾는 문제입니다.

나-다

핵심 개념

길이 0 간선을 넣으면 전체 거리는 양쪽 트리 안에서의 거리 합으로 계산됩니다.

왜 이 생각을 먼저 해야 하는지

새 간선 자체는 비용이 없으니, 후보들을 전부 왼쪽 거리 + 오른쪽 거리로 비교하면 됩니다.

단계별 풀이

  1. 각 보기마다 A에서 왼쪽 후보 정점까지의 거리, 그리고 오른쪽 후보 정점에서 B까지의 거리를 셉니다.
  2. 두 값을 더한 것이 연결 후 A-B 거리입니다.
  3. 그림을 기준으로 계산하면 합이 정확히 가 되는 것은 나-다뿐입니다.

헷갈리기 쉬운 점

중간 간선은 길이 이 아니라 입니다.

4. 강아지 모으기

문제 한눈에 보기

여섯 마리 강아지를 한 섬으로 모을 때 필요한 연료 총량의 최솟값을 구하는 문제입니다.

핵심 개념

목적지를 하나 정한 뒤, 각 섬에서 그곳까지의 최단거리 합을 계산하면 됩니다.

왜 이 생각을 먼저 해야 하는지

누구를 먼저 옮길지보다 “어느 섬으로 모을지”가 총 비용을 결정합니다.

단계별 풀이

  1. 가능한 도착 섬을 하나씩 후보로 놓습니다.
  2. 각 강아지가 자기 섬에서 그 후보 섬까지 가는 최소 연료를 구합니다.
  3. 그 여섯 값을 더한 것이 해당 후보의 총 비용입니다.
  4. 그림의 그래프에서 이 값을 모두 비교하면 최소가 입니다.

헷갈리기 쉬운 점

직접 가는 화살표만 볼 것이 아니라, 중간 섬을 거치는 더 싼 경로가 있는지도 확인해야 합니다.

5. 두 팀

문제 한눈에 보기

8명을 4명씩 두 팀으로 나누되, AB는 서로 다른 팀에 있게 하는 경우의 수를 묻는 문제입니다.

핵심 개념

A가 속한 팀을 먼저 정하면 중복 없이 셀 수 있습니다.

왜 이 생각을 먼저 해야 하는지

팀 이름이 따로 없는 문제에서는 같은 분할을 두 번 세기 쉽습니다. 기준 인물 하나를 고정하면 깔끔합니다.

단계별 풀이

  1. A가 속한 팀을 먼저 정합니다.
  2. B는 반대 팀에 있어야 하므로 A의 팀에는 나머지 6명 중 3명만 더 고르면 됩니다.
  3. 경우의 수는 입니다.
  4. A의 팀이 정해지면 B 쪽 팀은 자동으로 결정됩니다.

헷갈리기 쉬운 점

이미 A의 팀을 기준으로 셌으므로 마지막에 로 나누면 안 됩니다.

6. 정육각형 위의 점

문제 한눈에 보기

한 변 길이 3인 정육각형에 점 7개를 아무렇게나 놓아도, 어떤 두 점의 거리가 반드시 X 이하가 되게 하는 최소 X를 구하는 문제입니다.

핵심 개념

비둘기집 원리와 반례 구성을 함께 써야 합니다.

왜 이 생각을 먼저 해야 하는지

“반드시 그렇다”를 보이려면 상한을 증명해야 하고, “그보다 작은 값은 안 된다”도 함께 보여야 합니다.

단계별 풀이

  1. 정육각형을 중심에서 꼭짓점으로 나누면 한 변 길이 3인 정삼각형 6개로 분할할 수 있습니다.
  2. 이 작은 삼각형 안의 두 점 사이 거리는 최대 입니다.
  3. 점이 7개이고 삼각형은 6개이므로, 어떤 삼각형에는 점이 적어도 2개 들어갑니다.
  4. 따라서 어떤 두 점의 거리는 반드시 이하입니다.
  5. 한편 이면 정육각형의 6개 꼭짓점에만 점을 놓는 방법이 반례가 됩니다. 인접한 꼭짓점 거리도 정확히 이기 때문입니다.
  6. 그래서 최소값은 입니다.

헷갈리기 쉬운 점

상한만 보여서는 부족합니다. 보다 작은 값은 실패한다는 예도 꼭 있어야 합니다.

7. 점프

문제 한눈에 보기

정확히 6번 이동할 때 도달 가능한 위치들 가운데 와 가장 가까운 것을 묻는 문제입니다.

핵심 개념

기본 이동 한 번 뒤 점프만 이어 가는 블록은 만큼 전진합니다.

왜 이 생각을 먼저 해야 하는지

이동을 한 번씩 따라가기보다 6번을 몇 개 블록으로 나눌지를 보면 가능한 합이 한눈에 정리됩니다.

단계별 풀이

  1. 길이 인 블록 하나의 이동 거리는 입니다.
  2. 6번 이동을 블록 길이 합이 6이 되도록 나누면 가능한 도착점이 정해집니다.
  3. 가능한 값은 입니다.
  4. 이 중 와 가장 가까운 값은 입니다.

헷갈리기 쉬운 점

첫 이동은 반드시 기본 이동이므로, 블록 길이는 항상 1 이상입니다.

8. 거스름돈

문제 한눈에 보기

7원, 9원, 11원 동전으로 원 이상 모든 정수를 만들 수 있을 때, 가능한 최소 를 구하는 문제입니다.

핵심 개념

어느 구간의 연속된 금액을 만들 수 있으면, 가장 작은 동전 7원을 계속 더해 그 이후도 모두 만들 수 있습니다.

왜 이 생각을 먼저 해야 하는지

모든 큰 수를 직접 검사할 수는 없습니다. 연속 구간 하나를 잡는 것이 핵심입니다.

단계별 풀이

  1. , , , , 입니다.
  2. 부터 까지 7개 연속 정수를 모두 만들 수 있습니다.
  3. 이제 여기에 7원 동전 하나씩을 더하면 이상도 전부 만들 수 있습니다.
  4. 한편 은 만들 수 없으므로 최소값은 입니다.

헷갈리기 쉬운 점

이 문제는 “하나라도 못 만들면 실패”입니다. 그래서 시작점 바로 아래 수인 이 되는지 꼭 확인해야 합니다.

9. 막대기 세우기

문제 한눈에 보기

높이 1부터 6까지 막대 6개를 세웠을 때, 왼쪽에서 3개, 오른쪽에서 2개가 보이게 하는 배열의 수를 구하는 문제입니다.

핵심 개념

가장 큰 막대 의 위치를 기준으로 하는 점화식이 있습니다.

왜 이 생각을 먼저 해야 하는지

가장 큰 막대는 어느 쪽에서 보더라도 반드시 보입니다. 그래서 이 막대를 어디에 꽂느냐가 전체 구조를 나눕니다.

단계별 풀이

  1. 부터 까지 막대로 왼쪽에서 개, 오른쪽에서 개가 보이는 배열 수라고 둡니다.
  2. 가장 큰 막대 이 맨 왼쪽에 오면 경우의 수는 입니다.
  3. 맨 오른쪽에 오면 입니다.
  4. 중간의 개 위치 중 하나에 오면 가 그대로 들어갑니다.
  5. 따라서
    입니다.
  6. 이를 적용하면

    입니다.

헷갈리기 쉬운 점

중간에 큰 막대를 꽂으면 왼쪽과 오른쪽에서 보이는 개수는 늘지 않습니다.

10. 세 수의 곱

문제 한눈에 보기

수열에서 서로 다른 세 수를 골라 곱했을 때의 최댓값을 구하는 문제입니다.

핵심 개념

음수가 섞인 곱은 “가장 큰 양수 3개”와 “가장 작은 음수 2개 + 큰 양수 1개”를 비교해야 합니다.

왜 이 생각을 먼저 해야 하는지

음수 두 개를 곱하면 큰 양수가 될 수 있어서, 단순히 큰 수 세 개만 고르면 틀릴 수 있습니다.

단계별 풀이

  1. 큰 양수 후보는 이고 곱은 입니다.
  2. 가장 작은 음수 두 개는 입니다.
  3. 여기에 가장 큰 양수 을 곱하면 입니다.
  4. 이므로 최댓값은 입니다.

헷갈리기 쉬운 점

절댓값이 큰 음수 두 개는 오히려 정답 후보가 됩니다.

11. 2310

문제 한눈에 보기

이고 인 양의 정수 삼쌍의 개수를 세는 문제입니다.

핵심 개념

로 서로 다른 소수 5개의 곱입니다.

왜 이 생각을 먼저 해야 하는지

소인수가 모두 1번씩만 나오므로, 각 소수를 중 누구에게 줄지만 정하면 됩니다.

단계별 풀이

  1. 순서를 무시하지 않고 생각하면, 다섯 소수 각각을 , , 중 하나에 배정하는 방법 수는 입니다.
  2. 이 중 두 수가 같아지는 경우는 의 순열 3개뿐입니다.
  3. 따라서 서로 다른 세 수로 이루어진 순서 있는 삼쌍은 개입니다.
  4. 이제 가 모두 서로 다르므로, 같은 세 수의 순열은 6개씩 있습니다.
  5. 따라서 증가하는 순서 로 세면 입니다.

헷갈리기 쉬운 점

이 아니라 입니다.

12. 아이템 배치

문제 한눈에 보기

격자판의 빈 칸들에 아이템을 놓아, 철수가 어떤 경로로 가더라도 정확히 한 개의 아이템만 줍게 하는 배치 수를 세는 문제입니다.

핵심 개념

아이템이 놓인 칸들의 집합은 모든 시작-끝 경로와 정확히 한 번 만나는 “절단선”이 되어야 합니다.

왜 이 생각을 먼저 해야 하는지

경로가 아주 많기 때문에 하나씩 확인할 수 없습니다. 대신 모든 경로를 가로지르는 구조를 세어야 합니다.

단계별 풀이

  1. 이동은 아래 또는 오른쪽뿐이므로, 격자판은 방향 있는 비순환 그래프(DAG)로 볼 수 있습니다.
  2. 철수가 정확히 한 번만 아이템을 줍는다는 것은, 시작에서 끝으로 가는 모든 경로가 아이템 집합을 정확히 한 번 통과한다는 뜻입니다.
  3. 즉 아이템 칸들은 서로 겹치지 않게 경로들을 한 번씩 가르는 “절단선” 역할을 해야 합니다.
  4. 막힌 칸을 반영해 가능한 절단선들을 동적 계획법으로 세면 총 가지가 나옵니다.

헷갈리기 쉬운 점

“모든 경로가 적어도 한 번”이 아니라 “정확히 한 번”입니다. 두 번 줍는 배치는 탈락입니다.

13. 게임

문제 한눈에 보기

여섯 플레이어의 동전으로 두 명씩 게임하게 할 때, 총 게임 수를 최대로 만드는 문제입니다.

핵심 개념

게임 한 번당 동전 2개가 필요하므로 총동전수의 절반이 상한입니다.

왜 이 생각을 먼저 해야 하는지

최적화 문제는 먼저 절대 상한을 잡고, 그 상한이 실제로 되는지를 보여야 끝입니다.

단계별 풀이

  1. 그림의 동전을 모두 합하면 개입니다.
  2. 따라서 게임 수는 최대 번입니다.
  3. 정답 자료의 한 가지 실현 방법은
    A-B 3번, A-F 2번, B-C 3번, C-E 1번, C-F 6번, D-E 2번입니다.
  4. 실제로 번이 가능하므로 정답은 입니다.

헷갈리기 쉬운 점

상한과 실제 구성 둘 다 있어야 “최대”가 증명됩니다.

14. 한붓 그리기

문제 한눈에 보기

주어진 그래프에 간선 3개를 추가해서 오일러 회로를 만든 뒤, 한붓그리기 순서를 찾는 문제입니다.

정답 그림처럼 3개 간선을 추가하고, 예시 순서대로 순회하면 된다.

핵심 개념

한붓그리기를 하고 다시 출발점으로 돌아오려면 모든 정점의 차수가 짝수여야 합니다.

왜 이 생각을 먼저 해야 하는지

오일러 회로의 핵심 조건은 “모든 차수가 짝수”라는 한 문장으로 정리됩니다.

단계별 풀이

  1. 원래 그래프에서 홀수 차수 정점들을 확인합니다.
  2. 정답 그림처럼 간선 3개를 추가하면 이 홀수 차수 정점들이 짝지어져 모든 정점 차수가 짝수가 됩니다.
  3. 그러면 오일러 회로가 존재합니다.
  4. PDF의 번호 기준으로

    순서로 가면 모든 간선을 정확히 한 번씩 지나고 출발점으로 돌아옵니다.

헷갈리기 쉬운 점

간선 3개를 아무렇게나 더하는 것이 아니라, 홀수 차수 정점을 짝수로 바꾸는 방향으로 더해야 합니다.

15. 수열 만들기

문제 한눈에 보기

구간에 양수를 더하는 작업만 써서 0수열을 목표 수열로 만들 때, 최소 작업 수를 찾는 문제입니다.

핵심 개념

한 번의 작업은 구간 하나에 같은 높이의 직사각형을 더하는 것과 같습니다.

왜 이 생각을 먼저 해야 하는지

수열을 막대그래프로 보면, 최소 작업 수는 그 모양을 몇 개의 직사각형으로 덮을 수 있는지와 연결됩니다.

단계별 풀이

  1. 정답 자료의 10번 작업은
    , , , ,
  2. 이어서 , , , , 입니다.
  3. 이 10개의 구간 덧셈을 차례로 적용하면 정확히 목표 수열이 됩니다.
  4. 정답 자료에서는 10이 최소이며, 다른 10번짜리 방법도 허용됩니다.

헷갈리기 쉬운 점

한 번에 크게 더하는 작업이 항상 유리하지는 않습니다. 필요한 모양을 잘게 맞출 수 있어야 합니다.

16. 트리 순회

문제 한눈에 보기

18번 이하 이동으로 서로 다른 정점을 최대한 많이 방문하는 경로를 찾는 문제입니다.

14개 정점을 방문하는 경로가 정답

핵심 개념

트리에서는 새로운 가지를 가려면 중간 분기점으로 돌아오는 비용까지 계산해야 합니다.

왜 이 생각을 먼저 해야 하는지

깊은 가지 하나만 파고들면 이동 수를 많이 소모해 다른 가지를 못 봅니다.

단계별 풀이

  1. 정답 자료의 예시 경로는
    입니다.
  2. 이 경로는 18번 이동 안에서 정점 14개를 방문합니다.
  3. 중간 허브 정점으로 되돌아온 뒤 큰 가지를 차례로 훑는 것이 핵심입니다.

헷갈리기 쉬운 점

같은 정점을 여러 번 지나도 방문 개수는 늘지 않습니다.

17. 카드 가져가기

문제 한눈에 보기

양 끝 카드만 가져갈 수 있을 때, 주어진 계수와 카드 값의 곱합을 최대로 하는 선택 순서를 찾는 문제입니다.

오른쪽, 오른쪽, 왼쪽, 오른쪽, 오른쪽, 왼쪽

핵심 개념

양수 계수에는 큰 수를, 음수 계수에는 작은 수를 배정하는 방향으로 생각합니다.

왜 이 생각을 먼저 해야 하는지

한 번 고른 방향이 뒤 카드 구성을 바꾸므로, 현재 이득보다 전체 배치를 봐야 합니다.

단계별 풀이

  1. 계수 배열 에서 특히 3번째와 5번째는 음수입니다.
  2. 그래서 아주 큰 카드가 그 자리에 오지 않도록 앞 선택을 조정해야 합니다.
  3. 정답 자료의 최적 순서는 오른쪽, 오른쪽, 왼쪽, 오른쪽, 오른쪽, 왼쪽입니다.
  4. 이 순서가 큰 값을 좋은 계수와 만나게 해 최댓값을 만듭니다.

헷갈리기 쉬운 점

첫 두 번만 보고 큰 카드를 가져가는 탐욕법은 뒤의 음수 계수 때문에 실패할 수 있습니다.

18. 돌무더기

문제 한눈에 보기

두 바구니의 돌을 정해진 규칙으로 가져가는 게임에서 컴퓨터를 이기는 전략을 묻는 문제입니다.

정답 자료의 전략대로 두면 이길 수 있다.

핵심 개념

둘 중 하나의 바구니를 먼저 비운 뒤, 남은 바구니에서 유리한 턴 구조를 만드는 전략입니다.

왜 이 생각을 먼저 해야 하는지

두 바구니를 동시에 신경 쓰면 복잡합니다. 한 바구니를 먼저 정리해 게임을 단순화하는 것이 좋습니다.

단계별 풀이

  1. PDF의 전략은 먼저 B에서 1개만 반복해 B를 없애는 것입니다.
  2. 그다음 A만 남으면, 남은 돌 수의 짝홀을 보면서 처음 한 번 A에서 2개 또는 A에서 1개를 선택합니다.
  3. 이후에는 상황이 단순해져 마지막 돌을 내가 가져오도록 조절할 수 있습니다.
  4. 정답 자료에서는 이 전략으로 항상 승리할 수 있음을 사용합니다.

헷갈리기 쉬운 점

처음부터 AB를 번갈아 손대는 것이 좋아 보일 수 있지만, 전략을 흐리게 만들기 쉽습니다.

19. 최대공약수

문제 한눈에 보기

허용된 연산들만 써서 또는 로 바꾸는 문제입니다. 여기서 입니다.

정답 자료의 연산 순서는 이진 최대공약수 알고리즘(Stein algorithm)이다.

핵심 개념

짝수는 2로 나누고, 둘 다 홀수면 큰 수에서 작은 수를 빼는 이진 유클리드 알고리즘을 쓰면 됩니다.

왜 이 생각을 먼저 해야 하는지

허용된 연산들이 정확히 “2배, 2로 나누기, 빼기”라서, 일반 유클리드 알고리즘보다 Stein 알고리즘이 딱 맞습니다.

단계별 풀이

  1. 공통으로 들어 있는 의 거듭제곱을 먼저 떼어 냅니다.
  2. 그 뒤에는 AB가 둘 다 짝수이면 계속 로 나눕니다.
  3. 둘 다 홀수이면 큰 수에서 작은 수를 빼도 최대공약수는 변하지 않습니다.
  4. 이 과정을 반복하면 결국 가 됩니다.
  5. 마지막에 한쪽에서 다른 쪽을 빼 을 만들고, 필요하면 앞에서 떼어 둔 의 거듭제곱을 다시 곱해 꼴을 만듭니다.

헷갈리기 쉬운 점

빼기 연산은 값이 줄어들어 보여도 최대공약수는 유지됩니다.

20. 거짓말

문제 한눈에 보기

9명의 캐릭터에게 “둘의 속성이 같은가, 다른가” 꼴 질문을 한 번씩만 던져서, 참/거짓 속성을 모두 알아내는 문제입니다.

PDF의 질문 배치와 응답 해석으로 각 캐릭터 속성을 유일하게 결정할 수 있다.

핵심 개념

질문들을 그래프로 연결해 두면, 답변들이 “같다/다르다”라는 관계식이 되어 전체 속성을 복원할 수 있습니다.

왜 이 생각을 먼저 해야 하는지

개별 질문 하나만으로는 부족하지만, 여러 질문이 서로를 묶으면 전체 모순 여부로 답이 하나로 정해집니다.

단계별 풀이

  1. 정답 자료는 각 캐릭터에게 물을 쌍을 미리 잘 배치해 둡니다.
  2. 그러면 각 답변은 “두 캐릭터 속성의 XOR값”처럼 작동합니다.
  3. 9개의 답변을 모두 받으면, 서로 같은지 다른지의 관계가 하나의 연결된 구조를 이루어 각 캐릭터 속성이 유일하게 정해집니다.
  4. 실제 제출은 PDF의 질문 배치와 그에 맞는 속성 선택을 따르면 됩니다.

헷갈리기 쉬운 점

한 질문만 보고 바로 결론 내리는 문제가 아닙니다. 전체 답변을 묶어서 해석해야 합니다.

개념 한눈에 보기

주제해당 문제한 줄 요약
트리/그래프 거리1, 3, 4, 16구조를 고정한 뒤 거리나 이동 수를 세어 최적을 찾는다.
순위와 논리2, 20조건을 관계식으로 바꾸면 경우를 줄일 수 있다.
조합 세기5, 9, 11기준 원소를 고정하거나 점화식을 세워 개수를 구한다.
비둘기집/반례6“항상” 성립함과 “더 작은 값은 불가능”을 함께 보여야 한다.
상태 분해7, 8, 10가능한 상태를 블록이나 연속 구간으로 묶어 본다.
최적 배치12, 13, 17모든 경로나 전체 자원 상한을 고려해 배치를 정한다.
오일러/게임 전략14, 18조건을 만족하는 구조를 만든 뒤, 한 가지 이기는 절차를 제시한다.
구간 덧셈과 직사각형15수열을 덮는 최소 직사각형 개수 관점으로 본다.
최대공약수 알고리즘19나누기 2와 빼기만으로 gcd를 보존하며 줄인다.