본문 바로가기

백준 알고리즘

백준 [2562] 최댓값 - 자바

반응형

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

 

2562번: 최댓값

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

www.acmicpc.net


 

이전에 풀었던 N개가 주어질 때 조건을 구하는 식은

for문을 이용해 arr[]안에 주어진 N개의 수를 넣어 조건에 맞는 수를 arr[]에서 꺼내는 방법으로 해결했다.

 

이번에는 9개의 서로 다른 수가 주어질 때 최댓값을 찾는 문제이다.

9개의 수를 arr[] 안에 넣고, 그 중에 가장 큰 값을 출력하면 될 것 같다.

 

거기에 index 라는 매개변수를 만들어 for문 안에 같이 넣으면 갯수를 셀 수 있다.

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = 9 ;
		int[] arr = new int[N];
		
        for(int i=0;i<N;i++) {
			arr[i] = sc.nextInt();
			}
        
		int max = 0;
		int index = 0;
		
	    for(int i=0; i<9;i++) {
		if(arr[i]>max) {
			max = arr[i];
			index = (i+1);	
			}	
		//arrays에서 최댓값 받기 위해서는 for if 결합해야한다.
		//max나 index값을 for문 밖으로 가져오기 위해서 인스턴스를 만들어야 한다.
		}
		System.out.println(max);
		System.out.println(index);
	}
}

하나씩 짚어보자.

 

arr[] 안에 9개의 입력된 수를 넣는 방법은 두 가지가 있다.

첫 번째는 위의 int[] arr = { } 안에 sc.nextInt() 를 9번 적는 것이다.

두 번째 방법은 이전에 사용했던대로 개수 N을 9개로 지정하고, for문을 사용해 sc.nextInt()로 arr[] 안에 수를  넣는 것이다.

 

int[] arr = {sc.nextInt(), sc.nextInt(), sc.nextInt(), sc.nextInt(), 
		sc.nextInt(), sc.nextInt(), sc.nextInt(), sc.nextInt(), sc.nextInt()};
		//9개의 입력값 받기위해 지정
        
int N = 9 ;
int[] arr = new int[N];
for(int i=0;i<N;i++) {
	arr[i] = sc.nextInt();
}
   	//for문을 사용해 9개의 수를 넣는 것. 유지, 보수를 위해서는 이 방식이 낫다.
    // (만약 입력하는 수가 늘거나 줄면 N의 수를 바꾸면 되기 떄문이다.)

 

max 와 index라는 매개변수를 만들어 for문에 사용하자.

for문에 if문을 넣어 9개의 수를 하나씩 조건에 부합하는지 보는 것이다.

int max = 0;
int index = 0;
	
for(int i=0; i<9;i++) {
	if(arr[i]>max) {
		max = arr[i];
		index = (i+1);	
	}

 arr[i]>max 

첫 번째 숫자부터 max보다 큰지 확인하고 크면 그 숫자를 max로 바꾼다. 

그리고 몇 번째 수인지 i로 알지만, for 문 밖으로 i를 가져오기 위해서는 index라는 변수에 i+1값을 넣어 밖에서도 index를 호출함으로써 몇 번째 수인지 적을 수 있게 되는 것이다.

 

단순히 밖에 i를 적을 수 있을거라 생각했던 것을 반성하게 된다.

 

System.out.println(max);
System.out.println(index);

마지막에는 println을 적어서 두 수를 다른 줄에 출력하게 만들면 된다.

반응형