티스토리 뷰

 

문제 풀러 가기 ✍🏻


문제

머쓱이는 추운 날에도 아이스 아메리카노만 마십니다. 아이스 아메리카노는 한잔에 5,500원입니다. 머쓱이가 가지고 있는 돈 money가 매개변수로 주어질 때, 머쓱이가 최대로 마실 수 있는 아메리카노의 잔 수와 남는 돈을 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.

 

제한

  • 0 < money ≤ 1,000,000

 

입출력 예

money result
5,500 [1, 0]
15,000 [2, 4000]

 

입출력 예 설명

입출력 예 #1

  • 5,500원은 아이스 아메리카노 한 잔을 살 수 있고 잔돈은 0원입니다.

입출력 예 #2

  • 15,000원은 아이스 아메리카노 두 잔을 살 수 있고 잔돈은 4,000원입니다.

 

풀이(Solution)

 

1. int 타입의 배열을 다루기 위한 참조변수를 선언한다.

 

2. '길이가 2인 int 배열'을 생성한다. 실제 공간을 생성

 

3. 배열 answer의 0번째 요소에 money / 5000 을 저장한다. 

 

4. 배열 answer의 1번째 요소에 money % 5000 을 저장한다.

 

5. 배열 answer를 return한다.

 

시행착오(Trial&Error)

1. 배열은 한번 선언되고 나면 길이를 변경할 수 없다.

int[] answer = {};

 

코딩테스트 코드를 보면, 처음에 배열이 위와 같이 선언돼 있다. 

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
	at Solution.solution(Unknown Source)
	at SolutionTest.lambda$main$0(Unknown Source)
	at SolutionTest$SolutionRunner.run(Unknown Source)
	at SolutionTest.main(Unknown Source)

 

선언을 저렇게 한다는 것은 배열의 길이가 0인 배열을 생성하는 것과 같다.

배열의 길이는 처음 생성되면 변경이 불가능하기 때문에, 메서드에서 받아오는 인자값을 배열에 저장하는 등 활용하려면 배열 생성 시, 배열의 길이를 작업하기 좋게 넉넉하게 지정해야 한다.

 

int[] answer = new int[5];

 

이런 식으로 배열의 길이를 선언 시에 지정해주어야 한다.

 

코드

class Solution {
    public int[] solution(int money) {
        int[] answer = new int[2];
        answer[0] = money / 5500;
        answer[1] = money % 5500;
        return answer;
    }
}

 

다른 사람의 풀이를 참고하니, 생성 시에 바로 각 요소에 값을 저장해주는 방법도 있다는 것을 배웠다.

class Solution {
    public int[] solution(int money) {
        int[] answer = new int[] {money / 5500, money % 5500};
        return answer;
    }
}

 

개인적인 생각인데, 가독성 측면에서 전자의 코드가 좀 더 좋아보인다.

'알고리즘 > 문제풀이 - 프로그래머스' 카테고리의 다른 글

원장님 조언 👨‍🏫  (0) 2022.11.28
댓글
공지사항