Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

이지은님의 블로그

[JAVA] 코드카타 - (16)~(20) 본문

알고리즘 공부/[JAVA] 코드카타

[JAVA] 코드카타 - (16)~(20)

queenriwon3 2025. 1. 7. 10:34

문제 (16) : x만큼 간격이 있는 n개의 숫자

함수 solution 정수 x 자연수 n 입력 받아, x부터 시작해 x 증가하는 숫자를 n 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution 완성해주세요.

https://school.programmers.co.kr/learn/courses/30/lessons/12954

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

문제풀이

class Solution {
    public long[] solution(int x, int n) {
        long[] answer = new long[n];
        
        for(int i =1; i<=n; i++){
            answer[i-1] = (long)x*i;
        }
        return answer;
    }
}

 

 

 

 

문제 (17) : 자연수 뒤집어 배열로 만들기

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

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

문제풀이

class Solution {
    public int[] solution(long n) {
        int size = (int)( Math.log10(n)+1 );  // 숫자의 자릿수를 구하는 코드
        int[] answer = new int[size];

        for (int i =0;i<size; i++){
            answer[i] = (int)(n % 10);
            n /= 10;
        }

        return answer;
    }
}

 

 

 

 

문제 (18) : 문자열을 정수로 바꾸기

문자열 s 숫자로 변환한 결과를 반환하는 함수, solution 완성하세요.

https://school.programmers.co.kr/learn/courses/30/lessons/12925

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

문제풀이

class Solution {
    public int solution(String s) {
        int answer = Integer.parseInt(s);
        return answer;
    }
}

 

 

 

 

문제 (19) : 정수 제곱근 판별

임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.

n 양의 정수 x 제곱이라면 x+1 제곱을 리턴하고, n 양의 정수 x 제곱이 아니라면 -1 리턴하는 함수를 완성하세요.

https://school.programmers.co.kr/learn/courses/30/lessons/12934

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

문제풀이

class Solution {
    public long solution(long n) {
        long answer = 0;
        if(Math.sqrt(n) % 1 > 0) answer = -1;
        else answer = (long) Math.pow(Math.sqrt(n)+1,2);

        return answer;
    }
}

 

 

 

 

 

 

문제 (20) : 정수 내림차순으로 배치하기

함수 solution 정수 n 매개변수로 입력받습니다. n 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n 118372 873211 리턴하면 됩니다.

https://school.programmers.co.kr/learn/courses/30/lessons/12933

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

문제풀이

class Solution {
    public long solution(long n) {
        long[] input = new long[(int)(Math.log10(n) + 1)];
        for(int i = 0; i<input.length;i++){
            input[i] = n % 10;
            n /= 10;
        }

        long temp = 0;
        for(int i = 0; i<input.length;i++){
            for(int j = 0; j<input.length;j++){
                if(input[i]<input[j]){
                    temp = input[i];
                    input[i] = input[j];
                    input[j] = temp;
                }
            }
        }

        long result = 0;
        for(int i =0; i<input.length;i++){
            result += Math.pow(10,i-1) * 10 * input[i];
        }

        return result;
    }
}

코드를 너무 길게 쓴 것 같아서 다른 사람의 코드를 참고하고 배우도록 했다.

아래는 참고 하게된 코드이다.

import java.util.*;

class Solution {
  public long solution(long n) {
        String[] list = String.valueOf(n).split("");  // 입력받은 값을 String 배열로 변환
        Arrays.sort(list);		// 정렬

        StringBuilder sb = new StringBuilder();
        for (String aList : list) sb.append(aList);		// list의 순서대로 StringBuilder에 저장

        return Long.parseLong(sb.reverse().toString());	// long자료형으로 변환
  }
}

 

 

이후 조금 더 간결해진 코드를 작성하게되었다.(StringBuilder를 사용하지 않는 코드) 

class Solution20 {
    public long solution(long n) {

        String[] array = String.valueOf(n).split("");
        Arrays.sort(array);  // 정렬

        long[] input = new long[array.length];
        int j = 0;
        for(String s : array){
            input[j] = Long.parseLong(s);
            j++;
        }

        long result = 0;
        for(int i =0; i<input.length;i++){
            result += Math.pow(10,i-1) * 10 * input[i];
        }

        return result;
    }
}

'알고리즘 공부 > [JAVA] 코드카타' 카테고리의 다른 글

[JAVA] 코드카타 - (26)~(30)  (0) 2025.01.10
[JAVA] 코드카타 - (21)~(25)  (0) 2025.01.10
[JAVA] 코드카타 - (11)~(15)  (0) 2025.01.07
[JAVA] 코드카타 - (6)~(10)  (0) 2025.01.06
[JAVA] 코드카타 - (1)~(5)  (0) 2025.01.06