백준 2577번 3052번

yeongnie·2021년 12월 19일
0
post-thumbnail

백준 2577번 숫자의 개수-1

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int[] arr = new int[10];
        int number =1;

        for (int i = 0; i < 3; i++) {
            number *= scan.nextInt();
        }//for end 입력
        String test = String.valueOf(number);

        for (int i = 0; i < test.length(); i++) {
            int j = test.charAt(i)-'0';
            arr[j]+=1;
        }//for end 확인과정
        
        for (int num : arr) {
            System.out.println(num);
        }//for end 출력
    }
}

방법 1
1. A x B x C 값을 String 으로 변환
2. 각 자리 charAt으로 뽑아낸다.
3. charAt(index) - '0' = int j --> int 로 변환
4. 0~9 arr에 j 자리에 갯수 추가하기 arr[j] = arr[j]+1 ;


백준 2577번 숫자의 개수-2

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        int[] arr = new int[10];
        int test =1;

        for (int i = 0; i < 3; i++) {
            test *= scan.nextInt();
        }//for end 입력

        for (int i = 0; i < 11; i++) {
            if(test == 0 ){ break;}

            arr[test%10]++;
            test/=10;
        } //for end 확인과정
        
        for (int num : arr) {
            System.out.println(num);
        }//for end 출력
    }
}

방법 2
1. 최대 10자리 수의 숫자를 비교하므로 for문은 10회로 설정
2. test/10가 (몫이) 0이면 break;
3. test%10 (나머지)를 arr[index] 에 count하기




백준 3052번 나머지-1

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int[] arr = new int[10];

        for (int i = 0; i < 10; i++) {
            arr[i]= scanner.nextInt()%42;
        }//for end 입력 + 확인할 나머지값 10개 저장
        int result = 10;

        for (int i = 0; i < 10; i++) {
            for (int j = i+1; j < 10; j++) {
                if(arr[i] == arr[j]){
                    result--;
                    break;
                }
            }
        }//for end 확인 과정
        
        System.out.println(result);
    }
 }

방법1

  • 경우의 수는 최대 10 이므로 중복인 경우 차감하는 방법
  1. 배열 arr에 확인할 나머지(주어진숫자%42) 저장한다.
    index는 입력값 순서이다.
  2. 중첩 for문 사용하여 i기준으로 같은 숫자가 있으면 -1 차감

백준 3052번 나머지-2

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int index;
        int[] arr = new int[42];
        for(int i = 0; i<10; i++){
            index = scanner.nextInt() % 42;
            arr[index] += 1 ;
        }//for end 입력 + 확인할 나머지 값 저장
        
        int result= 0;
        for(int i=0 ; i<42 ; i++){
            if(arr[i] != 0){ result++; }
        } //for end 나머지 count하기

        System.out.println(result);
    }
}

방법2
1. 칸이 42개인 (0~41) 배열 arr 생성 (index = 나머지값)
2. 값이 1 이상인 arrindex 갯수만 세기 = result

profile
curiosity-paradise

0개의 댓글