본문 바로가기
알고리즘 PS/자료구조

[백준] 2953번 - 나는 요리사다 (Python)

by 백호루이 2024. 3. 18.
반응형

https://www.acmicpc.net/problem/2953

 

2953번: 나는 요리사다

"나는 요리사다"는 다섯 참가자들이 서로의 요리 실력을 뽐내는 티비 프로이다. 각 참가자는 자신있는 음식을 하나씩 만들어오고, 서로 다른 사람의 음식을 점수로 평가해준다. 점수는 1점부터 5

www.acmicpc.net

 

문제

"나는 요리사다"는 다섯 참가자들이 서로의 요리 실력을 뽐내는 티비 프로이다. 각 참가자는 자신있는 음식을 하나씩 만들어오고, 서로 다른 사람의 음식을 점수로 평가해준다. 점수는 1점부터 5점까지 있다.

각 참가자가 얻은 점수는 다른 사람이 평가해 준 점수의 합이다. 이 쇼의 우승자는 가장 많은 점수를 얻은 사람이 된다.

각 참가자가 얻은 평가 점수가 주어졌을 때, 우승자와 그의 점수를 구하는 프로그램을 작성하시오.

입력

총 다섯 개 줄에 각 참가자가 얻은 네 개의 평가 점수가 공백으로 구분되어 주어진다. 첫 번째 참가자부터 다섯 번째 참가자까지 순서대로 주어진다. 항상 우승자가 유일한 경우만 입력으로 주어진다.

출력

첫째 줄에 우승자의 번호와 그가 얻은 점수를 출력한다.

예제 입력 1 복사

5 4 4 5
5 4 4 4
5 5 4 4
5 5 5 4
4 4 4 5

예제 출력 1 복사

4 19

예제 입력 2 복사

4 4 3 3
5 4 3 5
5 5 2 4
5 5 5 1
4 4 4 4

예제 출력 2 복사

2 17

 

<문제 해석>

1) 5명의 참가자가 각각 4번의 점수를 받는다.

2) 가장 많은 점수를 받은 참가자와 그 점수를 출력한다.

3) 우승자는 항상 한 명이다. (동점자를 체크할 필요 없음)

 

2차원 배열 입력 받는 방법

변수명 = [list(map(int, input().split())) for _ in range(참가자수)]

 

<문제 풀이>

참가자들의 점수를 2차원 배열로 받아서 for문으로 순차 탐색한다.

각 참가자의 점수의 총합을 저장하면서 max_score 값을 갱신해 나간다.

마지막에 max_score값에 해당하는 참가자의 번호와 점수를 출력한다.

 

<코드>

human = [list(map(int, input().split())) for _ in range(5)]
human_score = [0]*5
max_score = 0

for i in range(5):
    sum = 0
    for j in range(4):
        sum += human[i][j]
    human_score[i] = sum
    max_score = max(max_score, sum)

for i in range(5):
    if human_score[i] == max_score:
        print(i+1, max_score)
        break
반응형

댓글