반응형
문제
두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.
수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.
입력
첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.
출력
첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.
결과
메모리를 너무 많이 잡아먹어 뭔가 잘못된거 같았지만 다른 사람들의 자바 풀이를 보니 메모리 사용량이 비슷비슷했다.
코드
import java.util.HashSet;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
HashSet<Integer> hs = new HashSet<>();
Scanner sc = new Scanner(System.in);
for(int i=0; i<10; i++){
int x = sc.nextInt() % 42;
hs.add(x);
}
System.out.println(hs.size());
}
}
문제풀이
자바의 HashSet은 중복이 불가능하고 저장 순서가 유지되지 않는 Set 인터페이스의 구현 클래스이다.
HashSet의 중복 불가능한 성질을 이용해 for문으로 입력을 받으며 add로 HashSet에 요소들을 추가해주면 자동으로 중복이 걸러진다.
마지막은 hs.size()로 중복되지 않는 숫자들을 출력해주었다.
반응형
'Algorithm' 카테고리의 다른 글
백준 알고리즘 4673번 문제풀이 - 자바(JAVA) (0) | 2021.12.22 |
---|---|
백준 알고리즘 15596번 문제풀이 - 자바(JAVA) (0) | 2021.12.21 |
백준 알고리즘 4344번 문제풀이 - 자바(JAVA) (0) | 2021.09.12 |
백준 알고리즘 8958번 문제풀이 - 자바(JAVA) (0) | 2021.09.11 |
백준 알고리즘 1546번 문제풀이 - 자바(JAVA) (0) | 2021.09.11 |
댓글