프로그래머스/Lv. 0(코딩테스트 입문)

[프로그래머스 코딩테스트] 가장 큰 수 찾기(Java)

Sigfriede 2023. 4. 9. 18:48

  문제 설명

  정수 배열 array가 매개변수로 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

 

  제한사항

  • 1 <= array의 길이 <= 100
  • 0 <= array의 원소 <= 1,000
  • array에 중복된 숫자는 없습니다.

 

  입출력 예

array result
[1, 8, 3] [8, 1]
[9, 10, 11, 8] [11, 2]
class Solution {
    public int[] solution(int[] array) {
        int max = array[0];
        int maxIndex = 0;
        for (int i = 0; i < array.length; i++) {
            if (array[i] > max) {
                max = array[i];
                maxIndex = i;
            }
        }
        int[] answer = {max, maxIndex};
        return answer;
    }
}

  배열에서 가장 큰 수를 구하라고 하면 보통 Array.sort를 사용하여 오름차순으로 정렬한 후, 맨 앞의 원소를 선택하고는 합니다. 그러나 이 문제에서는 배열에서의 인덱스까지 함께 구하라고 했으므로 그 방법은 쓰지 못할 것 같습니다.

  max를 담을 변수와 max의 인덱스를 담을 변수를 각각 생성합니다. 각각 0으로 초기화한 후, 자신보다 큰 수를 만나면 갱신하는 방향으로 풀이를 진행할 예정입니다. for문이 array의 길이만큼 순회하면서 앞서 설명했듯 array의 i번째 원소가 max보다 클 경우 max에 array[i]를 할당하면서 갱신하고 있습니다. 여기서 max의 인덱스는 i로 할당해줍니다.

  answer 배열에 각각 max와 maxIndex를 할당합니다. 크기는 2로 고정되어 있으므로, 바로 값을 할당해버렸습니다.