Algorithm/프로그래머스

[프로그래머스] Level1) 자연수 뒤집어 배열로 만들기

햄습햄 2021. 10. 18. 13:04

문제 설명

 

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

 

 

제한 조건

 

  • n은 10,000,000,000이하인 자연수입니다.

 


풀이 과정 (자바)

 

입력받은 long형 변수인 n을 split을 통해 자릿수마다 나눠서 String형 배열인 arr에 담았다.

(입력받은 수가 12345라면 현재 arr에는 1, 2, 3, 4, 5로 값이 들어갔다.)

그리고 arr의 크기를 이용해 answer를 선언했다.

 

for문을 돌면서 answer 첫 번째에 arr 끝 값을 넣었다.

이때, arr는 String 배열이므로, int로 변환하여 값을 처리했다.

(answer에는 5, 4, 3, 2, 1 순으로 값이 들어갔다.)

 

 

결과

 

 


다른 사람의 풀이

 

"" + n을 이용해 입력받은 n을 String형 a에 값을 넣어줬다.

그리고 이 길이를 체크해서 answer를 선언했다.

 

while문을 n이 0보다 클 때는 계속 돌도록 처리했다.

answer의 첫 번째 값부터 입력하는데,

n을 10으로 나눴을 때의 몫과 나머지를 이용했다.

 

더보기

입력받은 값이 12345일 때 이를 나누면

12345 / 10 = 1234, 12345 % 10 = 5이 나왔다.

여기서, 나머지 값(5)을 answer 첫 번째에 넣었다.

 

그 다음 cnt가 두 번째 값을 입력받도록 처리되고,

n은 1234인 상태로 이를 나누면

1234 / 10 = 123, 1234 % 10 = 4가 나왔다.

두 번째 값은 4가 들어가게 됐다.

 

그렇게 while문을 계속 돌리면

n이 1인 상태가 되고,

1 / 10 = 0, 1 % 10 = 1이 됐다.

 

순서대로 while문을 돌리면 n이 0보다 크다는 조건이 false가 되므로,

while문을 종료하고 answer를 return 했다.

 

 

기타

 

거꾸로 값을 받기 위해 입력 값을 10으로 나눈 나머지를 이용할 방법은 생각하지 못했다.

생각을 못했던 만큼 놀랍고 좋은 방법이었다. 새로운 방법에 대해 배운 기회였다.