728x90

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

 

2562번: 최댓값

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

www.acmicpc.net

 

쉬운 문제입니다. 단순하게 생각해서 오류가 났었는데요 오류가 난 부분도 같이 공유해볼게요. 

import java.util.Scanner;


public class Main11 {
	
	
	public static void main(String[] args) {

		Scanner sc=new Scanner(System.in);
		int a=sc.nextInt();

		int[] num=new int[a];
		
		for(int i=0; i<num.length; i++) {
			num[i]=sc.nextInt();	
		}
		
		System.out.println(num[a-1]);
		System.out.println(num.length-1);
	}
}

저번에 최소값 최대값 구하는것처럼 제가 식을 세웠는데요. 이렇게 하니깐 답은 나오는데

백준에서는 런타임 에러가 뜨더라고요

아무래도 스캐너로 배열의 정수값을 받는게 안좋았던거같습니다. 

 

문제에도 나와있듯이 서로 다른 9개의 자연수를 받았다고 해서 저도 받아서 사용해보니!! 정답이 나왔습니다. 하지만 약간의 다른 식이 있으니 같이 보도록 하시죠!

 

import java.util.Scanner;


public class Main11 {
	
	
	public static void main(String[] args) {

		Scanner sc=new Scanner(System.in);
		//int a=sc.nextInt(); 사용하지 않을겁니다.

		int[] num=new int[9];//배열의 길이는 9입니다. 
		int max=0;//최대값을 넣어줄 변수를 선언합니다.
		int max_length=0;//배열의 길이를 선언할 변수.
		for(int i=0; i<num.length; i++) {
			num[i]=sc.nextInt();	//배열안에 값을 넣어줄 변수를 선언합니다.
		}
		for(int i =0; i<num.length; i++) {
			if(num[i]>max) {//배열안에 값보다 max가 작을시 
				max=num[i];//배열의값 i는 max 가 된다고 선언해줍니다. 
				max_length=i;//배열의 길이를 선언해줍니다.
			}
		}
		
		System.out.println(max);//최대값을 구합니다. 
		System.out.println(num.length-1);//배열의 끝길이는 n-1이기에 -1을해줍니다.
	}
}

이렇게 선언하시면 정수값을 9개 넣고 최대값을 구한뒤에 최대값의 배열을 알려줍니다. 

728x90
복사했습니다!