Home [ALGORITHM_JOBS] 21. class president
Post
Cancel

[ALGORITHM_JOBS] 21. class president



Preview Image

문제

오민식 선생님은 올해 형택초등학교 6학년 1반 담임을 맡게 되었다. 오민식 선생님은 우선 임시로 반장을 정하고 학생들이 서로 친숙해진 후에 정식으로 선거를 통해 반장을 선출하려고 한다. 그는 자기반 학생 중에서 1학년부터 5학년까지 지내오면서 한번이라도 같은 반이었던 사람이 가장 많은 학생을 임시 반장으로 정하려 한다.

그래서 오민식 선생님은 각 학생들이 1학년부터 5학년까지 몇 반에 속했었는지를 나타내는 표를 만들었다. 예를 들어 학생 수가 5명일 때의 표를 살펴보자.

표사진

위 경우에 4번 학생을 보면 3번 학생과 2학년 때 같은 반이었고, 3번 학생 및 5번 학생과 3학년 때 같은 반이었으며, 2번 학생과는 4학년 때 같은 반이었음을 알 수 있다. 그러므로 이 학급에서 4번 학생과 한번이라도 같은 반이었던 사람은 2번 학생, 3번 학생과 5번 학생으로 모두 3명이다. 이 예에서 4번 학생이 전체 학생 중에서 같은 반이었던 학생 수가 제일 많으므로 임시 반장이 된다.

각 학생들이 1학년부터 5학년까지 속했던 반이 주어질 때, 임시 반장을 정하는 프로그램을 작성하시오.


입력

첫째 줄에는 반의 학생 수를 나타내는 정수가 주어진다. 학생 수는 3 이상 1000 이하이다. 둘째 줄부터는 1번 학생부터 차례대로 각 줄마다 1학년부터 5학년까지 몇 반에 속했었는지를 나타내는 5개의 정수가 빈칸 하나를 사이에 두고 주어진다. 주어지는 정수는 모두 1 이상 9 이하의 정수이다.


출력

첫 줄에 임시 반장으로 정해진 학생의 번호를 출력한다. 단, 임시 반장이 될 수 있는 학생이 여러 명인 경우에는 그 중 가장 작은 번호만 출력한다.


예제 입력

5
2 3 1 7 3
4 1 9 6 8
5 5 2 4 4
6 5 2 6 7
8 4 2 2 2

예제 출력

4

아이디어

표사진
표로 예를 들어보자. 기준이 4번 학생이고 1번학생이랑 비교한다고 가정해보자.
나는 처음에 생각을 했을 때 4번학생을 기준으로 화살표 방향으로 위, 아래로 비교해야된다고 생각했다.
하지만 여기서 문제점이 발생했다. 문제점은 같은 번호의 학생이 중복될 수 있다.
예를 들어보자 4번 학생과 3번 학생을 위의 방식대로 위, 아래로 비교해 보자. 2학년때 같은반, 3학년 때 같은 반이므로 중복으로 2번이 세어진다. 이러한 문제점을 발견하고 다른 방법을 찾았다. 위의 문제점처럼 중복되지 않기 위해 4번학생과 1번학생전체, 2번학생전체… 5번 학생 전체를 비교하는 것이다. 표사진
위 표처럼 4번 학생의 1학년 반, 1번 학생의 1학년 반 / 4번 학생의 2학년 반, 1번 학생의 2학년 반 / … / 4번 학생의 5학년 반, 1번 학생의 5학년 반 이렇게 if문을 사용해서 1번이라도 같은반이면 tmp에 1을 추가하는 방법을 사용함으로 중복의 문제점을 제거하고 max 라는 변수를 사용해서 같은 반이었던 사람이 가장 많은 학생을 선정하였다.


코드

풀이보기(클릭)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
n = int(input())
arr1 = [list(map(int, input().split())) for _ in range(n)]
max = -1
tmp = 0
maxLine = 0

for i in range(n):
    for j in range(n):
        if i == j:
            continue
        if arr1[i][0] == arr1[j][0] or arr1[i][1] == arr1[j][1] or arr1[i][2] == arr1[j][2] or arr1[i][3] == arr1[j][3] or arr1[i][4] == arr1[j][4]:
            tmp += 1
    if max < tmp:
        max = tmp
        maxLine = i + 1
    tmp = 0
print(maxLine)

문제 출처

한국정보올림피아드 KOI 2006 본선 초등부1번

This post is licensed under CC BY 4.0 by the author.

[ALGORITHM_JOBS] 20. offset

[ALGORITHM_JOBS] 22. attackrange

Trending Tags