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

Kong-al·2022년 9월 25일
0

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

[ 답안 ]

문제가 첫날에 풀었던 자릿수 더하기와 비슷하다고 생각했다.
그때는 숫자를 바로 나누는 방법을 먼저 사용했지만 이번에는 글자로 바꾸어서 쪼개는 방법을 먼저 사용하였다.

	class Solution {
	    public int[] solution(long n) {
	    	//파라미터로 받은 n값을 string타입으로 변환
	    	String num = Long.toString(n);
	    	// 배열을 만들어 위에서 스트링타입으로 받아온 파라미터값의 길이로 배열생성
	        int[] answer = new int[num.length()];
	        for(int i = 0 ; i < num.length();i++) {
	        	// 순서대로 넣어줄 배열생성
	        	String[] result = new String[num.length()]; 
	        	// 반복문을 통해 스트링타입으로 받아온 파라미터값을 한글자씩 쪼개서 위 배열에 넣어준다
	        	result = num.split("");
	        	// 반환될 배열에 역순으로 넣어준다
	        	answer[(num.length()-1)-i] = Integer.parseInt(result[i]);
	        }
	        return answer;
	    }
	}

[ 답안 ]
위 방법으로 풀고난 후 쪼개지않고 나눠서도 풀수있나 고민하며 문제를 풀어보았다.

	class Solution {
	    public int[] solution(long n) {
	    	//파라미터로 받은 n값을 string타입으로 변환
	    	String num = Long.toString(n);
	    	// 배열을 만들어 위에서 스트링타입으로 받아온 파라미터값의 길이로 배열생성
	        int[] answer = new int[num.length()];
	        // 배열에 인덱스값으로 쓸 객체생성
	    	int cnt = 0;
	    	// 반복문을 통해
	    	while(n > 0) {
	    		// cnt 기본값이 0이므로 제일 처음에 10으로 나눈 값의 나머지를 answer[0]에 담아준다
	    		answer[cnt] = (int)( n%10);
	    		// n을 10으로 나눈값의 몫만을 가지며 나머지를 버린다.
	    		n = n/10;
	    		// cnt값을 증가시켜 다음 반복 때 인덱스값을 증가하여 값을 넣어준다.
	    		cnt++;
	    	}
	        
	        return answer;
	    }
	}

while대신 for문을 이용하면 객체를 더 생성하지 않아도 된다.
하지만 아직은 while문이 익숙하지 않아 되도록 while문을 사용하려고 한다.

[ 답안 ] - for문 이용

	class Solution {
	    public int[] solution(long n) {
	    	String num = Long.toString(n);
	    	int[] answer = new int[num.length()];
            for(int i = 0 ; i < num.length(); i++) {
	    		answer[i] = (int)( n%10);
	    		n = n/10;
	    	}
	        return answer;
	    }
	}
profile
웹개발 공부중!(❁´◡`❁)

0개의 댓글