문제 설명 및 입출력 예시
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345면 [5,4,3,2,1]을 리턴합니다.
제한조건 - n은 10,000,000,000 이하인 자연수입니다.
입출력 예
n | return |
12345 | [5, 4, 3, 2, 1] |
코드 & 풀이과정
처음 문제를 봤을때 굉장히 당황했지만 곰곰히 생각해본 결과 그냥 여태 했던것처럼 10의 나머지를 구하고 짜르고 10의 나머지를 구하고 짜르고를 반복하면 역순으로 배치가 된다는걸 깨달았고 코드를
class Solution {
public int[] solution(long n) {
int s = (int) Math.log10(n) + 1;
int[] answer = new int[s];
for (int i = 0; i < s; i++) {
answer[i] = (int) (n % 10);
n /= 10;
}
return answer;
}
}
이런식으로 전개했다. 저기서 Math.log10은 (int)로 형변환을 해서 소수점을 제거해준 후 +1을 해주면 자리수를 빠르게 구할 수 있다. 따라서 나머지는 그냥 포문에 넣고 돌리면서 0 부터 s까지 배열에 값을 집어넣으면 해결되는 코드다.
회고
첫번째로 나는 java배열을 선언하고 초기화를 해주는법을 가물가물해 했었다. 다시한번 기초가 부족함을 실감했다.
두번째로 여전히 다른 사람의 풀이에는 센세이션한 풀이법이 참 많은거같아서 현타라고나 할까 막 의기소침해지는게 느껴진다. 하지만 계속 하다보면 언젠가는 괜찮아질거라고 생각한다. 괜찮아지겠지...
💻프로그래머스 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12932
'실력 향상 일지 > 프로그래머스' 카테고리의 다른 글
[Java] 하샤드 수 (0) | 2022.10.12 |
---|---|
[Java] 문자열 내 p와 y의 개수 (0) | 2022.10.11 |
[Java] 정수 제곱근 판별 (0) | 2022.10.09 |
[Java] 평균 구하기 (0) | 2022.10.08 |
[Java] 약수의 합 (0) | 2022.10.07 |