프로그래머스 문제풀이

BlackBird·2024년 8월 18일

개발자 취업 일지

목록 보기
82/116
//자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
//예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.

public class Main {
    public static void main(String[] args) {
    }
}
class Solution {
    public int solution(int n) {
        String num = String.valueOf(n);
        int sum = 0;

        for (char numbers : num.toCharArray()) {
            sum += Character.getNumericValue(numbers);
        }

        return sum;
    }
}

이 문제 같은 경우에는 아무리 코드를 살펴봐도 답이 맞는데 내 테스트케이스가 계속 맞지 않아서 보니까 테스트 케이스가 잘못되어있었다. 다음과 같이 테스트케이스 수정

package com.ki.level1.p12931;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

import static org.assertj.core.api.AssertionsForClassTypes.assertThat;

public class Tests {
    @Test
    @DisplayName("값 6")
    void t1() {
        Solution solution = new Solution();
        assertThat(solution.solution(123)).isEqualTo(6);
    }

    @Test
    @DisplayName("값 24")
    void t2() {
        Solution solution = new Solution();
        assertThat(solution.solution(987)).isEqualTo(24);
    }

    @Test
    @DisplayName("값 5")
    void t3() {
        Solution solution = new Solution();
        assertThat(solution.solution(11111)).isEqualTo(5);
    }
}

다음문제

//정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
//입출력 예 #1
//12의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다.
class Solution {
    public int solution(int n) {
        int sum = 0;

        for (int i = 1; i <= n; i++) {
            if (n % i == 0) {
                sum += i;
            }
        }

        return sum;
    }
}

약수 더하기 문제 간단히 풀었다.

다음!

<%@page import="java.util.Map"%>

임포트.. 해주자..

다음.

package com.ki.level1.p12933;

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

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {}
}
class Solution {
    public long solution(long n) {
        // 1. 숫자를 문자열로 변환
        String s = String.valueOf(n);

        // 2. 문자열을 문자 배열로 변환
        char[] chars = s.toCharArray();

        // 3. 문자 배열을 정렬
        Arrays.sort(chars);

        // 4. 정렬된 문자 배열을 역순으로 변환
        StringBuilder sb = new StringBuilder(new String(chars));
        sb.reverse();

        // 5. 역순으로 정렬된 문자열을 정수로 변환하여 반환
        return Long.parseLong(sb.toString());
    }
}

이게 생각보다 조금 어려었는데, 내 머리로 하지 않고 구글링해서 문자열 변환과 배열 변환, 문자열 역순같은 키워드로 검색해서 푸니까 쉽게 풀렸다.

다음.

//정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.

class Solution {
    public double solution(int[] arr) {
        int sum = 0;
        double avg = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }

        return (double) sum / arr.length;
    }
}

금방 풀었다. 값 다 더하고 배열 길이만큼 나누면 되니까.

profile
한영신의 벨로그입니다.

0개의 댓글