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을 적어서 두 수를 다른 줄에 출력하게 만들면 된다.
'백준 알고리즘' 카테고리의 다른 글
백준 [2675] 문자열 반복 - 자바 풀이 (0) | 2023.05.17 |
---|---|
백준 [10813] 공 바꾸기 -자바 풀이 (0) | 2023.05.17 |
백준 [10871] X보다 작은 수 - 자바 (0) | 2023.05.11 |
백준 15552번 빠른 A+B 자바 (0) | 2023.05.09 |
백준 2349번 별찍기-2 자바 (0) | 2023.05.08 |