티스토리 뷰
문제
머쓱이는 추운 날에도 아이스 아메리카노만 마십니다. 아이스 아메리카노는 한잔에 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 |
|---|
댓글
공지사항
