본문 바로가기

[프로그래머스 Lv.0] 가장 큰 수 찾기

@doyiya242026. 1. 9. 01:50

가장 큰 수 찾기

 

문제 설명

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

 

제한사항

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

입출력 예 설명

입출력 예 #1

  • 1, 8, 3 중 가장 큰 수는 8이고 인덱스 1에 있습니다.

입출력 예 #2

  • 9, 10, 11, 8 중 가장 큰 수는 11이고 인덱스 2에 있습니다.

 

내가 작성한 코드  

import java.util.*;

class Solution {
    public int[] solution(int[] array) {
        int max = array[0];
        int idx = 0;
        

        for (int i = 1; i < array.length; i++) {
            if (array[i] > max) {
                max = array[i];
                idx = i;
            }
        }

        return new int[]{max, idx};
    }
}

->  시간 이슈로,,,, gpt의 도움을 받아 구현하게되었다. 

 

GPT 최종 도움

  • 배열의 첫 번째 값을 기준으로 삼음
  • 아직 비교를 안 했으니까:
    • 현재 최댓값 = 첫 번째 값
    • 인덱스 = 0
  • i = 1부터 시작하는 이유:
    • array[0]은 이미 max로 사용했기 때문
  • 배열 끝까지 하나씩 검사 → O(n)
  • 현재 값이 지금까지의 최댓값보다 크다면?
  • 더 큰 값을 찾았으니:
    • max를 새 값으로 교체
    • 그 값의 위치(i)를 idx에 저장

📌 항상 max와 idx는 세트로 움직임

 

최종 최댓값과 인덱스를 배열로 반환

 

 

 

다른 사람이 작성한 코드

class Solution {
    public int[] solution(int[] array) {
        int[] answer = new int[2];

        for(int i=0;i<array.length;i++) {
            if(array[i] > answer[0]) {
                answer[0] = array[i];
                answer[1] = i;
            }
        }

        return answer;
    }
}

 

-> 가장 직관적인 코드

 

 

 

 

회고

쉬운 코드이고 중간에 흐름을 끊겨 GPT로 마무리를 하였다. 시간 복잡도를 생각해보며 코드를 진행하는 것은 여전히 어려워보인다..

목차