알고리즘 풀이

[백준]2562번: 최댓값 - java 풀이

코디드 2023. 4. 6. 23:15

 

배열을 쓰지 않은 풀이)

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int num = 0;
		
		int max = 0;
		int value = 0;
		for(int i=1; i<=9; i++) {
			num = Integer.parseInt(br.readLine());
			
			if(num>max) {
				max=num;
				value=i;
			}
		}
		System.out.println(max+"\n"+value);
	}
}

 

주어진 수가 자연수이기 때문에 최댓값을 0으로 초기화하고 각각의 수를 비교해주면 된다.

배열을 사용하지 않기 위해 입력받은 자연수와 if문을 같은 for문 내에 적어줬다.

몇번째 수인지 구하기 위해서 최댓값을 구할때의 i값을 if문안에 넣어줬다. 그렇게 해야 num이 최댓값이 맞을 때는 i가 해당 숫자의 차례에 해당하는 숫자로 저장되고, num이 최댓값이 아닐때는 num>max가 false가 되어 i값이 바뀌지 않기 때문이다. 

 

 

 

 

 

 

배열을 이용한 풀이)

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int[] num = new int[9];
		
		int max = 0;
		int value = 0;
		for(int i=0; i<9; i++) {
			num[i] = Integer.parseInt(br.readLine());
			
			if(num[i]>max) {
				max=num[i];
				value=i+1;
			}
		}
		System.out.println(max+"\n"+value);
	}
}

 

사실 이렇게 하나의 for문 안에서 각 줄의 숫자를 저장하고 최댓값을 비교하는 것을 동시에 할 경우, 배열을 사용할 필요가 없다. 이렇게까지 생각을 전개하는게 익숙하지 않아서 각 줄의 숫자를 배열에 저장하고, 그 이후에 다시 for문을 써서 최댓값을 비교할때 배열이 필요하다.