[백준 / java 11] 1차원 배열 > 3052번 나머지

2025. 5. 14. 11:37·코테/백준

# 3052번 나머지

문제

두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 

수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.

입력

첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.

출력

첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.

 

 

 

 

* 풀이

어려워,,,

서로 다른 값 구하는 걸 어떻게 해야 할지 모르겠어서 이것저것 해보다가 결국 검색했다.

HashSet을 이용한 방법이 많이 나오던데 그보다는 나에게 익숙한 for문과 if문을 이용한 코드를 봤다.

 

 

> for문 if문을 이용한 풀이

import java.util.*;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int[] num = new int[10]; // num 배열
		int cnt = 0; 
        
		for(int i = 0; i < num.length; i++){
			num[i] = sc.nextInt()%42; // 42로 나눈 나머지를 저장한다.
			boolean bl = false; // 나머지가 이미 존재하는 값인지 체크하는 변수
						
			for(int j = 0; j < i; j++) { // 나머지값 비교
				if(num[i] == num[j]){
					bl = true; 
					break; // 중복 발견되면 bl을 true로 바꾸고 비교 중단
				}
			}
			if(bl == false){ //중복이 없을 시 cnt++
				cnt++;
			}
		}
		System.out.print(cnt);
	}
}

 

 

 

> HashSet을 이용한 풀이

HashSet은 중복을 허용하지 않는 집합 (set)

 

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        HashSet<Integer> hs = new HashSet<Integer>(); // HashSet 생성. 중복을 허용하지 않는 집합

        for (int i = 0; i < 10; i++) {
            hs.add(sc.nextInt() % 42); 
            // 42로 나눈 나머지를 HashSet에 추가. 이미 들어간 중복값은 자동으로 무시된다.
        }
        System.out.println(hs.size()); // 서로 다른 나머지 개수 출력
    }
}

 

 

 

 

이 문제를 풀면서 같은 문제를 푸는 방식은 다양하다는 것을 다시 한 번 느꼈다..

 

 

 

 

 

저작자표시 비영리 변경금지 (새창열림)

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

[백준 / java 11] 27866번 문자와 문자열  (0) 2025.05.21
[백준 / java 11] 11654번 아스키 코드, 2743번 단어 길이 재기  (0) 2025.05.15
[백준 / java 11] 1차원 배열 > 5597번 과제 안 내신 분...?  (0) 2025.05.13
[백준 / java 11] 1차원 배열 > 10813번 공 바꾸기  (0) 2025.05.12
[백준 / java 11] 1차원 배열 > 10810번 공 넣기  (0) 2025.05.10
'코테/백준' 카테고리의 다른 글
  • [백준 / java 11] 27866번 문자와 문자열
  • [백준 / java 11] 11654번 아스키 코드, 2743번 단어 길이 재기
  • [백준 / java 11] 1차원 배열 > 5597번 과제 안 내신 분...?
  • [백준 / java 11] 1차원 배열 > 10813번 공 바꾸기
amying
amying
공부해보겠슨
  • amying
    꽁꽁 얼어붙은 자바 위를 자박자박
    amying
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (332)
      • 공부 (55)
        • JAVA (17)
        • Spring (17)
        • Java Script (1)
        • React (0)
        • SQL (3)
        • DB (1)
        • CS (13)
        • 기술면접 (3)
      • Git (2)
      • 강의 (36)
        • 부스트코스: Connect On: 테크와 나를 잇.. (16)
        • 부스트코스: CS50 (20)
      • 네이버 부스트캠프 베이직 (25. 06) (0)
      • 에러 (10)
      • 코테 (205)
        • 백준 (29)
        • 프로그래머스 JAVA Lv.0 (116)
        • 프로그래머스 JAVA Lv.1 (7)
        • 프로그래머스 SQL (53)
      • 개인 프로젝트 (16)
        • 책첵 CHAEKCHECK (2)
        • 일정 관리 서비스 만들기 (0)
        • 게시판 만들기 (eclipse-JSP) (14)
      • 이것저것 (4)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    알고리즘
    데이터연동
    프로그래머스
    부스트코스강의
    ORACLE에러
    오라클에러
    Java
    책첵개발일지
    CS50
    springbot
    코테
    lombok
    부스트코스
    에러
    코딩테스트_입문
    git명령어
    업무자동화
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.4
amying
[백준 / java 11] 1차원 배열 > 3052번 나머지
상단으로

티스토리툴바