Nellie's Blog

[프로그래머스][코딩테스트 연습] 자연수 뒤집어 배열로 만들기 본문

Back-end/Algorithm

[프로그래머스][코딩테스트 연습] 자연수 뒤집어 배열로 만들기

Nellie Kim 2022. 11. 21. 18:06
728x90

문제 설명

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

제한 조건
  • n은 10,000,000,000이하인 자연수입니다.
입출력 예nreturn
12345 [5,4,3,2,1]

 

내 풀이

import java.util.*;

public class Solution {
	public static int[] solution(long n) {
        String[] arr = String.valueOf(n).split("");
        
        int[] answer = new int[arr.length];
        
        for(int i =0; i< arr.length; i++) {
        	answer[i] = Integer.parseInt(arr[i]);
        }
        
        Arrays.sort(answer, Collections.reverseOrder());
        
        
        int temp = 0;
        
        for(int i = 0; i<answer.length-1; i++) { // for문 한번 쓰면 안됨!!!!!!!!!!!!!!!
        	if(answer[i] < answer[i+1]) {
        		temp = answer[i];
        		answer[i] = answer[i+1];
        		answer[i+1] = temp;
        		
        		continue;
        	}
        }
        
        
        return answer;
    }
    //23451

for문을 1번 써서 제대로 돌아가지가 않았던것!!!!!

 

 

내풀이 정답 수정

import java.util.*;
public class Solution {
    public static int[] solution(long n) {
        String[] arr = String.valueOf(n).split("");

        int[] answer = new int[arr.length];

        for(int i =0; i< arr.length; i++) {
            answer[i] = Integer.parseInt(arr[i]);
        }
        int temp = 0;

        for(int i = 0; i<answer.length-1; i++) {
        	for(int j = i + 1; j < answer.length; j++) {
	    		if(answer[i] < answer[j]) {
	                temp = answer[i];
	                answer[i] = answer[j];
	                answer[j] = temp;
	    		}
            }
        }
        return answer;
    }
    public static void main(String[] args) {

        int n = 12345;
        System.out.println(Arrays.toString(solution(n)));
    }
}

for문을 이렇게 2번 쓰면 제대로 [5,4,3,2,1] 로 출력이 된다!!!!! 

 

정답 풀이1

class Solution {
    public int[] solution(long n) {
        String s = "" + n;
        int[] answer = new int[s.length()];

        for (int i = 0; i < s.length(); i++) {
            answer[i] = s.charAt(s.length() - i - 1) - '0';
        }

        return answer;
    }
}

charAt(i) 로 빼주는구나!!!

 

정답 풀이2

import java.util.*;

class Solution {
    public int[] solution(long n) {        
        List<Integer> list = new ArrayList<>();

        while(n != 0) {
            list.add((int)(n % 10));
            n /= 10;
        }

        int[] answer = new int[list.size()];
        for (int i = 0; i < list.size(); i++) {
            answer[i] = list.get(i);
        }
        return answer;
    }
}

10으로 나눠줘서 나머지값으로 계산하는 방법,,,!!!!