[JAVA] 나머지

2022. 3. 8. 18:22·Computer Science/Algorithm

https://st-lab.tistory.com/46?category=833672 

 

[백준] 3052번 : 나머지 - JAVA [자바]

https://www.acmicpc.net/problem/3052 3052번: 나머지 문제 두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 수 10개를 입력받은..

st-lab.tistory.com

*해당 포스팅은 상단에 링크된 포스팅을 바탕으로 개인 공부 목적을 위해 작성되었으므로 자세한 내용은 위 링크를 확인해 주시기 바랍니다.


 

최근에 봤던 자바 컬렉션 프레임워크 글에서 간단하게 HashSet의 개념을 정리했었는데 이 문제에서 간단히 사용한다.

https://st-lab.tistory.com/142?category=856997 

 

자바 [JAVA] - 자바 컬렉션 프레임워크 (Java Collections Framework)

아마 프로그래밍을 전공한다면 '자료구조'라는 단어를 들어본 적이 있을 것이다. 자료구조는 Data Structure라고 하는데, 직역하면 데이터 구조. 좀 더 자세하게 설명하자면 '일련의 일정 타입들의

st-lab.tistory.com

 

Set

→ 데이터를 중복해서 저장할 수 없다.

→ 입력 순서대로의 저장 순서를 보장하지 않는다.

 

HashSet - Set의 파생 클래스

→ Set의 특징을 포함한다.

→ hash에 의해 데이터의 위치를 특정시켜 해당 데이터를 빠르게 색인할 수 있다.

→ 삽입, 삭제, 색인의 속도가 빠르다.

 

이 문제에서는 HashSet을 이용해서 중복되지 않은 정수만 저장해서 원소의 총개수를 반환하면 된다.

 

 

HashSet을 이용한 코드 

import java.util.HashSet;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Main {
	public static void main(String[] args) {
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        HashSet<Integer> h = new HashSet<Integer>();
        
        for(int i = 0; i < 10; i++) {
        	h.add(Integer.parseInt(br.readLine()) % 42); 
        }
        br.close();
        System.out.println(h.size());
    }
}

 

 

배열을 이용한 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputSreamReader;

public class Main {
	public static void main(String[] args) {
    	boolean[] arr = new boolean[42];
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        for(int i = 0; i < 10; i++) {
        	arr[Integer.parseInt(br.readLine()) % 42] = true;
        }
        
        int count = 0;
        for(boolean value : arr) {
        	if(value) {
            count++;
        	}   
        }
        System.out.println(count);
    }
}

→ 42로 나눴을 때 나머지로 나올 수 있는 0~41을 배열에 넣어둔다.(default 값은 false)

→ 나머지 값이 나올 때마다 true로 바꿔준다. 같은 값이 여러 번 나와도 한 번만 세면 되기 때문에 한 번이라도 나온 수만 true로 바꿔준다.

→ true 값인 원소의 개수를 출력한다.

 

 

 

 

 

'Computer Science > Algorithm' 카테고리의 다른 글

[JAVA] 셀프 넘버  (0) 2022.03.09
[JAVA] OX퀴즈  (0) 2022.03.08
[JAVA] 숫자의 개수  (1) 2022.03.06
[JAVA] 최소, 최대  (0) 2022.03.04
[JAVA] A+B - 4  (0) 2022.03.03
'Computer Science/Algorithm' 카테고리의 다른 글
  • [JAVA] 셀프 넘버
  • [JAVA] OX퀴즈
  • [JAVA] 숫자의 개수
  • [JAVA] 최소, 최대
soro.k
soro.k
  • soro.k
    일일소록
    soro.k
  • 전체
    오늘
    어제
    • 분류 전체보기 (181)
      • Java (14)
      • Spring (24)
      • JavaScript (5)
      • DB (32)
      • Web (6)
      • Computer Science (47)
        • Operating System (9)
        • Network (3)
        • Data Structure (6)
        • Algorithm (28)
      • Git (1)
      • 노트 (4)
        • F-lab (20)
        • 회고 (14)
        • Review (12)
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
soro.k
[JAVA] 나머지
상단으로

티스토리툴바