• [백준] 3052 자바(JAVA) : 나머지

    2021. 1. 31.

    by. 꼬마봄이

    깃허브 1일 1커밋 챌린지

    1/27 문제 풀이 내용

     

     


     

     

     

    이번에 풀어본 문제는

    백준 알고리즘 3052번(1차원 배열) 문제

     

    출처 : 백준알고리즘 3052번 문제

     

     

     

    새로운 함수를 써보게 되었던 문제 !

     

    다음은 내가 제출한 답안이다.

     

    제출답안(정답처리)
    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
    31
    32
    import java.util.Scanner;
    import java.util.TreeSet;
     
    public class Beakjoon3052 {
     
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            
            int[] arr = new int[10];
            int[] tot = new int[10];
            
            TreeSet<Integer> ts = new TreeSet<Integer>();
            
            for (int i = 0; i < 10; i++) {
                arr[i] = sc.nextInt();
            }
            
            for (int i = 0; i < 10; i++) {
                int na = arr[i] % 42;
                
                tot[i] = na;
                ts.add(tot[i]);
            }
            
            int count = 0;
            
            for(int n : ts) {
                count++
            }
            System.out.println(count);
        }
    }
    cs

     

     

     

    ▶ 문제 풀이 방식

     

    1. 10개의 숫자를 저장할 int[] arr을 만든다.

    2. for문을 이용해 10개의 숫자를 각각 배열에서 하나씩 꺼내 42로 나눈 나머지를 새로운 int[] tot에 저장한다.

    3. TreesSet()를 이용하여 int[] tot에 있는 중복값을 제거한다.

    4. for Each문을 이용해 Treeset ts에 담긴 갯수만큼 count++를 한다.

     

     

     


     

    ◆  TreeSet

    TreeSetSet 인터페이스를 구현한 클래스로 객체를 중복해서 저장할 수 없고 저장 순서가 유지되지 않는다

    Set의 성질을 그대로 가지고 있다. (비슷한 클래스로 HashSet이 있다.)

     

    그래서 이번 문제에 중복 값을 제거하는 용도로 TreeSet()를 사용하였다. (import를 해줘야 한다.)

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    TreeSet<Integer> ts = new TreeSet<Integer>();
     
    TreeSet<Integer> ts = new TreeSet<>();
     
    // <>안의 값은 파라미터 타입
    // new의 파라미터 타입은 생략가능
     
     
     
    //문제에 활용
     
     for (int i = 0; i < 10; i++) {
                int na = arr[i] % 42;
                
                tot[i] = na;
                ts.add(tot[i]); //add를 이용해 값을 추가
            }
    cs

     

    순서는 정렬되지 않는다는 점을 명심하자! (순서 정렬을 하고싶다면 Arrays.sort() 를 이용하면 된다.)

     

     

     

    ◆  For Each ( = 포콜론 )

    기존 for문과 똑같은 반복문이지만 for문보다 더 간단하게 배열에 저장된 모든 값을 반복해서 꺼내는 방법이다.

     

    -  문법의 형태

     for( 타입 변수 : 배열이나 컨테이너 값 )

     {

         반복 수행문

     }

     

    기본 문법에 : (콜론)이 쓰여서 java에서는 포(for) 콜론이라고도 부른다.

     

    1
    2
    3
    4
    5
    //문제에 활용
     
    for(int n : ts) {  // ts 배열에 담긴 값의 갯수만큼 for문을 반복
        count++;
    }
    cs

     

     

     

     

     

    'etc > 알고리즘' 카테고리의 다른 글

    [백준] 10951 자바(JAVA) : A + B - 4  (0) 2021.01.31
    [백준] 2577 자바(JAVA) : 숫자의 개수  (0) 2021.01.31
    [백준] 10952 자바(JAVA) : A+B - 5  (1) 2021.01.13

    댓글