SHUSTORY

[ 백준 ] 3052번 : 나머지 본문

코딩테스트/JAVA

[ 백준 ] 3052번 : 나머지

어서오시우 2024. 1. 16. 18:09
728x90
문제

 

내 풀이
import java.util.Arrays;
import java.util.Scanner;

public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] intArray = new int[10];
for (int i = 0; i < 10; i++) {
intArray[i] = sc.nextInt()%42;
}
Arrays.sort(intArray);
int count = 10;
for (int i = 0; i < 9; i++) {
if (intArray[i] == intArray[i+1])count--;
}
System.out.println(count);
}
}
  • 내가 알고 있는 선에서 문제를 풀어보았는데, 이 방법 외에도 다양한 방법이 있을 것 같아 새로운 개념을 알아보고 기록하고자 한다.
  • 나는 10 크기의 배열을 만들어 10개의 int 값을 입력받아 42로 나눈 값을 배열에 저장하고,
    해당 배열 요소를 정렬하여 앞뒤 값으로 중복되는 값이 있을 경우 count 10에서 1씩 차감하는 방식으로
    서로 다른 나머지 값이 몇 개 있는지 알아내었다.

 

HashSet
Set / HashSet / 문제풀이
  • Set
    • 자바 컬렉션 프레임워크에서 중복된 요소를 허용하지 않고,
      순서를 유지하지 않는 컬렉션 인터페이스
    • Set 인터페이스를 구현한 주요 클래스
      • HashSet
      • LinkedHashSet _ 순서를 유지하려면 LinkedHashSet 클래스를 사용하면 된다.
      • TreeSet _ 범위 검색과 정렬에 유리한 컬렉션 클래스 / HashSet 보다 데이터 추가, 삭제에 시간이 걸림
  • HashSet
    • 중복된 값을 허용하지 않는다.
    • 순서를 유지하지 않는다.
    • Null 요소를 한 번만 저장할 수 있다.
  • HashSet을 사용한 문제풀이
import java.util.HashSet;
import java.util.Scanner;

public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
HashSet<Integer> hSet = new HashSet<Integer>();

for (int i = 0; i < 10; i++) {
hSet.add(sc.nextInt() % 42);
}
sc.close();
System.out.println(hSet.size());
}
}