가장 큰 수 찾기
https://school.programmers.co.kr/learn/courses/30/lessons/120899
1) 문제
정수 배열 array가 매개변수로 주어질 때,
가장 큰 수와 그 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성해보세요.
제한사항
1 ≤ array의 길이 ≤ 100
0 ≤ array 원소 ≤ 1,000
array에 중복된 숫자는 없습니다.
2) 예시
Result Table
array |
result |
[1, 8, 3] |
[8, 1] |
[9, 10, 11, 8] |
[11, 2] |
입출력 예 #1
1, 8, 3 중 가장 큰 수는 8이고 인덱스 1에 있습니다.
입출력 예 #2
9, 10, 11, 8 중 가장 큰 수는 11이고 인덱스 2에 있습니다.
3) 풀이
1. 클래스 선언을 해줍니다
● class Solution {
클래스명은 대문자로 시작해야하고, 정답이라는 의미로 Solution이라는 단어를 사용하였습니다.
2. 정수배열 array를 매개변수로 하는 solution 메소드를 선언합니다.
solution은 정수배열을 반환하므로 데이터타입을 int[]로 합니다.
● public int[] solution(int[] array) {
3. 제한사항을 확인하고, 만족하지 않을 경우 예외처리합니다.
● if(1 > array.length || array.length > 100){
throw new IllegalArgumentException("제한사항을 확인하세요");
}
for(int i=0; i < array.length; i++){
if(0 > array[i] || array[i] > 1000){
throw new IllegalArgumentException("제한사항을 확인하세요");
}
}
4. 정답이 될 정수배열 answer를 생성합니다. (가장 큰 수 와 그 인덱스 총 2개의 원소이므로 크기는 2)
가장 큰 수의 인덱스는 maxIndex로 작명하고 생성합니다.
가장 큰 수는 maxNumber로 작명하고 생성합니다. 이 때 초기값은 array의 0번 인덱스 값으로 합니다.
그 이유는 5번에서 알 수 있습니다.
● int[] answer = new int[2];
int maxNumber = array[0];
int maxIndex = 0;
5. for반복문을 통해 maxNumber가 다음번 i번째 인덱스요소보다 크다면 그대로,
작다면 그 i번째 요소가 maxNumber, maxIndex가 되게합니다.
이렇게 모든 순회를 마치면 최종적으로 나온 maxNumber와 maxIndex를 answer 배열의 0번째, 1번째 인덱스 원소가 되게합니다.
● for(int i = 0; i < array.length; i++) {
if(maxNumber < array[i]){
maxNumber = array[i];
maxIndex = i;
}
}
answer[0] = maxNumber;
answer[1] = maxIndex;
return answer;
}
}
4) 코드
class Solution {
public int[] solution(int[] array) {
if(1 > array.length || array.length > 100){
throw new IllegalArgumentException("제한사항을 확인하세요");
}
for(int i=0; i < array.length; i++){
if(0 > array[i] || array[i] > 1000){
throw new IllegalArgumentException("제한사항을 확인하세요");
}
}
int[] answer = new int[2];
int maxNumber = array[0];
int maxIndex = 0;
for(int i = 0; i < array.length; i++) {
if(maxNumber < array[i]){
maxNumber = array[i];
maxIndex = i;
}
}
answer[0] = maxNumber;
answer[1] = maxIndex;
return answer;
}
}
5) 느낀점
처음에 for문 안에다가 int maxNumber = array[0]을 넣어뒀다보니 자꾸 for문이 반복될 때마다, maxNumber값이 초기값으로 변해버려 오답처리되었습니다.
그래도 쉽게 오류사항을 발견하여 수정하였더니 정답에 도달할 수 있었습니다.
비슷한 문제를 이전에 푼 적이 있어서 해결방법을 떠올리기 쉬웠던 문제였습니다.