백준/기타

[백준/Java] 2953번: 나는 요리사다

KimNang 2023. 5. 9. 16:53

문제 정보

제목 : 나는 요리사다

번호 : 2953번

사용 언어 : Java

문제 링크

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

 

2953번: 나는 요리사다

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

www.acmicpc.net

 

시간 제한 메모리 제한
1 초 128 MB

 

문제

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

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

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

 

입력

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

 

출력

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

 

입출력 예제


나의 풀이

한줄의 입력을 받기 위해 BufferedReader을 사용했고, 한 줄의 문자열을 Token으로 분리하여 값을 얻기 위해 StringTokenizer을 사용했습니다. 먼저 가장 많은 점수를 얻은 사람의 번호와 점수를 저장할 변수 num과 score을 선언하여 0으로 초기화 합니다. 1부터 5까지 반복하는 for루프를 이용해 한줄의 문자열을 입력받아 Token으로 나누었습니다. 그리고 현재 참가자의 점수를 저장할 변수 s를 0으로 선언&초기화합니다. 4번 반복하는 내부의 for루프를 이용하여 s에 Token으로 나눈 값들을 하나씩 정수형으로 형변환하여 저장합니다. 그럼 s에는 현재 참가자의 총점이 들어가게 됩니다. 이것을 score와 비교하여 s가 더 크다면 num에는 현재 참가자 번호 i를, score에는 s를 저장합니다. 모든 반복이 끝나면 num과 score를 출력합니다.

 

코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class Main {
   
   public static void main(String[] args) throws IOException {
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
      int num = 0;
      int score = 0;
      
      for(int i =1;i <=5;i++) {
    	  StringTokenizer st = new StringTokenizer( br.readLine() );
    	  int s = 0;
    	  for(int j = 0; j < 4;j++) {
    		  s += Integer.parseInt(st.nextToken());
    	  }
    	  
    	  if( score < s) {
    		  num = i;
    		  score = s;
    	  }
      }
      
      bw.write(num + " " + score);
      
      bw.flush();
      bw.close();
      br.close();
   }   
}