가장 큰 수 찾기
문제 설명
정수 배열 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로 마무리를 하였다. 시간 복잡도를 생각해보며 코드를 진행하는 것은 여전히 어려워보인다..
'CodingTest > 프로그래머스 (미운영)' 카테고리의 다른 글
| [프로그래머스 Lv.0] 약수구하기 (2) | 2026.01.06 |
|---|---|
| [프로그래머스 Lv.0] 영어가 싫어요 (0) | 2025.08.10 |
| [프로그래머스 Lv.0] 가까운 수 (0) | 2025.08.10 |
| [프로그래머스 Lv.0] 대문자와 소문자 (0) | 2025.08.08 |
| [프로그래머스 Lv.0] 암호 해독 (0) | 2025.08.08 |