문제

문제출처 : Baekjoon

img

풀이1

import java.util.*;

public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int arr[] = new int[9];
        int arrIndex = 0;

        for(int i = 0; i < arr.length; i++){
            arr[i] = sc.nextInt();
        }

        int max = arr[0];

        for(int i = 0; i < arr.length; i++){
            if(max <= arr[i]){
                max = arr[i];
                arrIndex = i+1;
            }
        }

        sc.close();
        System.out.println(max);
        System.out.println(arrIndex);
    }
}

풀이2

import java.util.*;

public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int arr[] = new int[9];
        int arrIndex = 0;
        int max = arr[0];

        for(int i = 0; i < arr.length; i++){
            arr[i] = sc.nextInt();
        }

        for(int i = 0; i < arr.length; i++){
            if(max < arr[i]){
                max = arr[i];
                arrIndex = i+1;
            }
        }

        sc.close();
        System.out.println(max);
        System.out.println(arrIndex);
    }
}

회고

  1. 1번 방식에서는 <= 이 조건을 안줘서 계속 90%에서 틀렸습니다가 발생했다. 그래서 2번방식으로 바꾸고나니 바로 해결이 되어서 뭔가 싶어 다른사람들의 질문창을 보았다. 1번방식에 max < arr[i]로 조건을 줄 경우, 제일 큰값이 0번 인덱스에 들어갈 경우 밑의 if문 조건의 arrIndex = i+1의 조건을 만족하지 못해 arrIndex의 값으로 0이 출력되어 <= 으로 조건을 줘야한다는 것이였다. 누군가 나처럼 이런 오류를 발견하지 못했고 이유를 적어두시지 않았으면 잠 못잘뻔 했다 다행이다…!