본문 바로가기
Algorithm/Baekjoon

[백준 알고리즘][자바] 2562번 : 최댓값

by hyunipad 2021. 3. 2.
반응형

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

 

2562번: 최댓값

9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어

www.acmicpc.net

문제 해설

서로 다른 9개의 자연수이닌깐 크기가 9인 배열을 생성하고 값을 배열에 담은 후 최댓값을 찾는다.

시도해보자.

 

해결 방법

package number_2562;

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 NumberFormatException, IOException {
		
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	
		StringTokenizer st;
		int[] num = new int[9]; // 크기가 9인 배열 생성
		
		for(int i = 0 ; i < 9 ; i++) {
			num[i] = Integer.parseInt(br.readLine()); // 9개의 자연수를 입력 받아서 배열에 저장
		}
		
		int before_num = num[0]; // 이전 자연수 저장
		int result = 0; // 최댓값의 인덱스 저장
		
		for(int i  = 0 ; i < num.length ; i++) {
			if(before_num < num[i]) { // 이전 숫자보다  크면
				result = i; // 인덱스 저장
			}
			before_num = num[i];
		}
		
		bw.write(num[result] + "\n" + (result + 1));
		
		br.close();
		bw.flush();
		bw.close();
	}

}

결과는 실패

결과값은 정상으로 나오는데 뭐가 틀린거지...

아하 테스트 결과 첫번째 인덱스의 숫자가 최댓값일때 출력이 되지 않는 것을 발견했다.

멍청하게 했네ㅋㅋㅋㅋ

최댓값을 맥스에 저장하고 그 맥스값과 다음 배열 숫자를 비교해야하는데 그냥 이전숫자만 비교하고 있었다.

 

수정된 코드

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 NumberFormatException, IOException {
		
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	
		int[] num = new int[9];
		
		for(int i = 0 ; i < 9 ; i++) {
			num[i] = Integer.parseInt(br.readLine());
		}
		
		int max = 0;
		int result = 0;
		
		for(int i  = 0 ; i < num.length ; i++) {
			if(max < num[i]) {
				max = num[i];
				result = i;
			}
		}
		
		bw.write(max + "\n" + (result + 1));
		
		br.close();
		bw.flush();
		bw.close();
	}

}

 

반응형

댓글