문제
https://school.programmers.co.kr/learn/courses/30/lessons/120899
풀이
처음에 생각했던 풀이 코드
import java.util.Arrays;
class Solution {
public int[] solution(int[] array) {
Arrays.sort(array);
int[] answer = {array[array.length-1], array.length};
return answer;
}
}
처음에는 위와같이 생각했다. 그리고 테스트 돌려보고 잘못된거란걸 알았다..ㅋㅋㅋ
문제자체를 이해를 잘못했는데, 나는 가장 큰 숫자를 찾고, 그 배열의 길이를 구해서 배열에 차례로 넣으라는 건줄 알았는데, 아니었다...
가장 큰 숫자를 찾는건 맞는데 그 숫자가 있던 자리를 찾아야하는 것이었다. ㅋ
그래서 다시 생각을해보니 Arrays 메소드를 사용할 필요가 없을 것 같아 삭제하고 for문을 돌리기로 했다.
1. 먼저 for문을 돌리기 전에 최댓값을 담을 maxNum 변수와 그 수가 담긴 인덱스를 저장할 maxIdx를 선언한다.
- (이때, maxNum 안에 Integer.MIN_VALUE를 넣은 이유는 => array 배열 안의 수가 0부터 시작된다는 사실을 알고는 있지만 변수 선언시 자바에서 표현 가능한 가장 작은 정수 값으로 초기화하는 역할을 내가 부여해주고 싶어서 그렇게 설정했다.(그냥.. 공부하고싶어서..) 사실상 int maxNum = 0; 으로 초기화선언해주어도 상관없다.)
2. for문을 이용해 array 배열을 차례로 돌려 배열안의 해당인덱스의 수가 maxNum보다 크면 다시 maxNum과 madIdx에 각각 해당자리의 수와 인덱스숫자를 넣는 방식으로 처리한다.
3. 그리고 answer 배열을 선언해 그 안에 maxNum과 maxIdx를 차례로 넣어준 후 반환한다.
코드
class Solution {
public int[] solution(int[] array) {
int maxNum = Integer.MIN_VALUE;
int maxIdx = -1;
for (int i = 0; i < array.length; i++) {
if (array[i] > maxNum) {
maxNum = array[i];
maxIdx = i;
}
}
int[] answer = {maxNum, maxIdx};
return answer;
}
}
'하루하루 > 프로그래머스 문제풀이' 카테고리의 다른 글
[Lv.0 - Java] 120845. 주사위의 개수 (1) | 2023.12.07 |
---|---|
[Lv.0 - Java] 120895. 인덱스 바꾸기 (0) | 2023.12.05 |
[Lv.0 - Java] 120892. 암호 해독 (0) | 2023.11.22 |
[Lv.0 - Java] 120837. 개미 군단 (1) | 2023.11.22 |
[Lv.0 - Java] 120905. n의 배수 고르기 (1) | 2023.11.22 |