728x90

문제
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
- 출력 예시 -

정답 코드
< 내 정답 코드 >
class Solution {
public int[] solution(long n) {
String str = n + "";
int[] answer = new int[str.length()];
int index = 0;
for (int i = str.length() - 1; i >= 0; i--) {
char c = str.charAt(i);
answer[index++] = Integer.parseInt(String.valueOf(c));
}
return answer;
}
}
< 타인 답변 코드 >
class Solution {
public int[] solution(long n) {
String a = "" + n;
int[] answer = new int[a.length()];
int cnt=0;
while(n>0) {
answer[cnt]=(int)(n%10);
n/=10;
System.out.println(n);
cnt++;
}
return answer;
}
}
이것을 주의하자!
- 기본적인 알고리즘은 '맨 뒤 숫자부터 하나씩 새로운 배열에 추가하기'이다. 그렇게 되면 숫자를 뒤집은 원소를 가진 배열을 만들게 된다. 어렵게 생각하지 말자. 이를 위해서 먼저 long 형을 String 객체로 변환한 다음, chartAt() 메서드를 통해 하나씩 빼서 새로운 배열에 넣는다.
- 타인의 코드에서는 String 객체로 만들지 않고도 숫자를 뒤에서 하나씩 빼는 방법이 나온다. 바로 ' % 10 ' 연산자이다. 어떤 수에 % 10 을 하면 일의 자리만 남기 때문에 맨 뒤 숫자를 고를 수 있다. 그리곤 / 10 을 통해 사용한 일의 자리를 없애는 것이다. 이것도 좋은 방법!
'코딩 테스트' 카테고리의 다른 글
| [프로그래머스] (Lv.1) 이상한 문자 만들기 *** (0) | 2022.08.31 |
|---|---|
| [프로그래머스] (Lv.1) 자릿수 더하기 (0) | 2022.08.31 |
| [프로그래머스] (Lv.1) 정수 내림차순으로 배치하기 (0) | 2022.08.31 |
| [프로그래머스] (Lv.1) 정수 제곱근 판별 (0) | 2022.08.31 |
| [프로그래머스] (Lv.1) 제일 작은 수 제거하기 * (0) | 2022.08.30 |