문제
9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.
예를 들어, 서로 다른 9개의 자연수
3, 29, 38, 12, 57, 74, 40, 85, 61
이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다.
입력
첫째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다.
풀이
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i < 9; i++) {
list.add(scanner.nextInt());
}
int max = list.get(0);
int a = 0;
for (int i = 0; i < list.size(); i++) {
if (max <= list.get(i)){
max = list.get(i);
a = i+1;
}
}
System.out.println(max);
System.out.print(a);
}
}
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i < 9; i++) {
list.add(scanner.nextInt());
}
-> ArrayList를 선언해준 뒤 for문을 돌려 배열 안에 입력해준다.
ArrayList는 입력 받을 때 .add 함수를 이용한다.
int max = list.get(0);
int a = 0;
for (int i = 0; i < list.size(); i++) {
if (max <= list.get(i)){
max = list.get(i);
a = i+1;
}
}
-> max에 list 배열의 가장 앞 숫자를 넣어 준 뒤 for문을 돌려 배열의 각 숫자들과 비교해준다.
max에 들어있는 수 보다 크면 그 숫자를 max에 바꿔 넣어 최종적으로 가장 큰 수를 넣어준다.
여기서 if (max <= list.get(i)) 가 아니라 if (max < list.get(i)) 를 해주면 안된다.
가장 큰 수가 배열의 0번째에 들어있을 경우, if문이 돌아가지 않기 때문!
ex) list {9,8,7,6,5,4,3,2,1} 일때 max(=9) < list.get(=9) 이면 성립이 안되기 때문에
max의 값은 초기에 설정해줬던 9, 위치는(=a) 배열 1번이 아니라 초기 설정해줬던 0이 된다.
'백준' 카테고리의 다른 글
[JAVA] 백준 2920번 음계 (0) | 2023.03.06 |
---|---|
[JAVA] 백준 2675번 문자열 반복 (0) | 2023.03.06 |
[JAVA] 백준 10807번 개수 세기 (0) | 2023.03.01 |
[JAVA] 백준 25304번 영수증 (0) | 2023.03.01 |
[JAVA] 백준 10757번 큰 수 A+B (0) | 2023.03.01 |