[백준/JAVA]3052번 나머지

2025. 1. 10. 15:57·코딩테스트/백준

문제

https://www.acmicpc.net/problem/3052

입력된 10개의 수를 42로 나눈 나머지의 개수를 세는 문제였다.

문제 풀이

1. Map으로 풀기

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Map<Integer, Integer> map = new HashMap<>();

        for (int i = 0; i < 10; i++) {
            int num = scanner.nextInt();
            map.put(num%42, 1);
        }

        System.out.println(map.size());
    }
}

2. Set으로 풀기

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Set<Integer> remainderSet = new HashSet<>();

        for (int i = 0; i < 10; i++) {
            int num = scanner.nextInt();
            int remainder = num % 42; 
            remainderSet.add(remainder); 
        }

        System.out.println(remainderSet.size());
    }
}

3. 배열로 풀기 

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        boolean[] remainderExists = new boolean[42]; //가능한 나머지(0~41)가 저장되어 있는 배열
        int count = 0;

        for (int i = 0; i < 10; i++) {
            int num = scanner.nextInt();
            int remainder = num % 42; 
 
            if (!remainderExists[remainder]) { //이 나머지가 이전에 나왔는지 확인
                remainderExists[remainder] = true; //이 나머지가 이전에 나왔는지 여부를 저장
                count++; 
            }
        }

        System.out.println(count);
    }
}

코드 길이는 배열이 제일 긴데 성능은 제일 좋은 것 같다. 하지만 서로 다른 나머지의 수만 출력하는 것이기 때문에 중복을 허용하지 않는 set을 사용하는 게 좋을 것 같다.

https://yje44428.tistory.com/19

 

[JAVA]List, Set, Map 컬렉션(Collection)

컬렉션 프레임워크란?컬렉션(Collection)은 다수의 데이터를 효율적으로 관리하기 위한 데이터 구조와 알고리즘의 집합이다. Java의 컬렉션 프레임워크는 데이터의 저장, 검색, 수정, 

yje44428.tistory.com

'코딩테스트 > 백준' 카테고리의 다른 글

[백준/JAVA]1546번 평균  (0) 2025.01.13
[백준/JAVA]10811번 바구니 뒤집기  (0) 2025.01.13
[백준/JAVA]5597번 과제 안 내신 분..?  (0) 2025.01.10
[백준/JAVA]10818번 최소, 최대  (0) 2025.01.09
[백준/JAVA]10871번 X보다 작은 수  (0) 2025.01.09
'코딩테스트/백준' 카테고리의 다른 글
  • [백준/JAVA]1546번 평균
  • [백준/JAVA]10811번 바구니 뒤집기
  • [백준/JAVA]5597번 과제 안 내신 분..?
  • [백준/JAVA]10818번 최소, 최대
yxxjxxeee
yxxjxxeee
  • yxxjxxeee
    공부 일지
    yxxjxxeee
  • 전체
    오늘
    어제
    • study N
      • Framework
        • Spring
      • Language
        • JavaScript
        • C | C++
        • JAVA
        • PHP
      • CS
        • 네트워크
        • 자료구조
        • 데이터베이스
        • 운영체제
      • DBMS
        • MySQL
      • 코딩테스트 N
        • 백준 N
        • 프로그래머스
        • LeetCode
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 쇼핑몰 제작 프로젝트(PHP)
    • github
  • 공지사항

  • 인기 글

  • 최근 글

  • hELLO Designed By 정상우
    Version v4.10.2
yxxjxxeee
[백준/JAVA]3052번 나머지
상단으로

티스토리툴바