ProblemSolving/BackJoon

[BackJoon] JAVA 단계별 풀이 : 05. 함수 (completion)

JOKUN 2022. 9. 25. 16:52

[문제 풀이 완료 목록]

☑️ 정수 N개의 합

☑️ 셀프 넘버

☑️ 한수

 

 

[함수]

 

정수 N개의 합

 

15596번: 정수 N개의 합

C++17, Java 8, Python 3, C11, PyPy3, C99, C++98, C++11, C++14, Go, C99 (Clang), C++98 (Clang), C++11 (Clang), C++14 (Clang), C11 (Clang), C++17 (Clang)

www.acmicpc.net

문제 번호 : 15596

단계 : 1

package jokun.BackJoon.step5;

public class Practice15596 {

    public long sum(int[] a){
        long sum = 0;
        for (int i = 0; i < a.length; i++) {
            sum +=a[i];
        }
        return sum;
    }
}

 

 

 

셀프 넘버

 

4673번: 셀프 넘버

셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때,

www.acmicpc.net

문제 번호 : 4673

단계 : 2

package jokun.BackJoon.step5;

public class Practice4673 {
    public static void main(String[] args) {
        boolean check[] = new boolean[10000];

        for (int i = 1; i <= check.length; i++) {
            //10000까지의 숫자를 모두 계산해야하니까 이렇게 식을 세움
            int result = i + i / 10000 + ( i / 1000) % 10 + (i / 100) % 10 + (i / 10) % 10 + i % 10;
            if(result <= 10000){
                check[result - 1] = true;
            }
        }

        for (int i = 0; i < check.length; i++) {
            if(!check[i]){
                System.out.println(i + 1);
            }
        }
    }
}

 

 

 

한수

 

1065번: 한수

어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나

www.acmicpc.net

문제 번호 : 1065

단계 : 3

package jokun.BackJoon.step5;

import java.util.Scanner;

public class Practice1065 {
    public static void main(String[] args) {
        Hansu hansu = new Hansu();
        Scanner scan = new Scanner(System.in);
        hansu.countHan(scan.nextInt());//countHan에 N을 대입
        System.out.println(hansu.count);//count출력
    }
}
class Hansu{
    int count;

    public Hansu(){
    }

    public int countHan(int N){
        int[] arr = new int[N];
        for(int i = 0; i < N ; i++){
            arr[i] = i+1;//arr 배열에 1~N 대입
            int hun = arr[i]/100; //100의자리 공식
            int ten = arr[i] % 100 / 10;//10의자리 공식
            int one = arr[i] % 10;//1의자리 공식
            if(arr[i]<100){//100보다 작은 값일 경우
                count++; //모든 수가 한수
            }
            if(arr[i]>100) {//100보다 큰 수일 경우
                if ((hun - ten) == (ten - one)) {
                    count++;//조건에 맞아야지만 count++
                }
            }
        }
        return count;
    }
}