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

Stella·2021년 12월 1일
0

Coding Test

목록 보기
4/48

문제링크: https://programmers.co.kr/learn/courses/30/lessons/12932

자연수 뒤집어 배열로 만들기

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

제한 조건
n은 10,000,000,000이하인 자연수입니다.

Solution 1

public int[] solution(long n) {
	        String str = String.valueOf(n);
	        char[] s = str.toCharArray();
	        int[] answer = new int[str.length()];
	        for(int i=str.length()-1;i>=0;i--) {//뒤집어서 입력
	            answer[str.length()-1-i] = str.charAt(i)-'0';
	        }
	        return answer;
	    }

str.charAt(i)만 입력하면, [53, 52, 51, 50, 49] 이렇게 입력이 된다. 이유는 char형을 int형으로 형변환하면 아스키코드값으로 변환되기 때문에, 문자 '1'을 int형으로 변환하면 아스키코드 값인 49로 변환된다. 1을 가지기 위해서는 아스키코드값이 48인 '0'을 빼줘야한다. 49에서 48을 빼서 1을 얻게 된다. '2'는 아스키코드 값이 50, '3'은 51, '4'는 52, '5'는 53이다. 그래서 아스키코드값이 48인 '0'을 각자 빼주면, 1,2,3,4,5 원하는 값을 얻게 된다.

Solution 2

 public int[] solution2(long n) {
		 String s =""+n; //String에 n 추가
		 int[] answer = new int[s.length()];//입력받은 숫자의 길이만큼
		 int cnt=0;
		 while(n>0) {
			 answer[cnt]=(int)(n%10);//12345 -> 나머지 5 -> 4 -> 3 -> 2 ->1
			 n/=10; // n=1234 -> 123 -> -> 12 -> 1
			 cnt++;
		 }
		 return answer;
	 }

간단하게 %와 /= 이용해서 원하는 값을 얻을 수 있다.

Ref:
https://cokes.tistory.com/80

profile
Hello!

1개의 댓글

comment-user-thumbnail
2022년 8월 26일

솔루션 1에 char[] s = str.toCharArray(); 이코드는 왜있는건가요??

답글 달기