프로그래머스

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

빙수빈수 2021. 7. 13. 14:33

https://programmers.co.kr/learn/courses/30/lessons/12932

 

코딩테스트 연습 - 자연수 뒤집어 배열로 만들기

자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 제한 조건 n은 10,000,000,000이하인 자연수입니다. 입출력 예 n return 12345

programmers.co.kr

[문제]

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

 

[제한 조건]

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

 

[코드]

class Solution {
 public int[] solution(long n) {
		 String str=String.valueOf(n);
	     int length=Long.toString(n).length(); // n의 자릿수 개수
		 int[] answer=new int[length];
		 
		 /*
		  * n을 뒤집어 저장해야 하기 때문에 배열의 인덱스 끝부터 저장을 시작한다.
		  * int형 배열인 answer에 저장해야 하기 떄문에 Integer.parseInt() 함수를 사용한다.
		  * 이때, 해당 함수는 String형을 int형으로 바꿔주는 것이기 떄문에
		  * char형인 str.charAt()을 String 형으로 변환한 값을 int형으로 변환해야 한다.
		  */
		 for(int i=0;i<length;i++) 
			 answer[length-1-i]=Integer.parseInt(String.valueOf(str.charAt(i)));
			 
	     return answer;
	  }
}


[고찰]

 이번 문제에서 신경써야 할 부분은 딱 두 가지이다. 첫째는 배열 인덱스 부분이다. 자연수 n을 뒤집어서 저장해야 하기 때문에 배열의 끝 부분 부터 n의 자릿수를 저장해야 뒤집어 저장되기 때문에 인덱스 부분의 계산을 신경써야 한다. 

둘째는 자료형 변환 부분이다. answer 배열은 int형이지만 자릿수를 하나씩 분리하면 char형으로 변환되기 때문에 char형을 String형으로, String형을 다시 int형으로 2번 변환해야 int형 배열에 char형을 저장 가능하다. 이 두 부분만 신경쓴다면 쉽게 해결 가능한 문제였다.