새소식

Programmers Coding Test/Java

[프로그래머스 120899] Java - 코딩테스트 입문 / 가장 큰 수 찾기

  • -

 

 

가장 큰 수 찾기

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/120899

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

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값이 초기값으로 변해버려 오답처리되었습니다.

그래도 쉽게 오류사항을 발견하여 수정하였더니 정답에 도달할 수 있었습니다.

비슷한 문제를 이전에 푼 적이 있어서 해결방법을 떠올리기 쉬웠던 문제였습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.