[백준 3052번] 나머지
[백준 3052번] 나머지
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | package _2월_1주차; import java.util.Scanner; import java.util.HashSet; public class 백준_손수경_정답_3052 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] mod = new int[1000]; int n = 0; for (int i = 0; i < 10; i++) { n = sc.nextInt(); mod[i] = n % 42; } //배열을 HashSet으로 변환 HashSet<Integer> hs = new HashSet<>(); for (int i = 0; i < 10; i++) { hs.add(mod[i]); } //HashSet을 다시 배열로 변환 Integer[] result = hs.toArray(new Integer[0]); System.out.println(result.length); } } | cs |
배열 중복 없는 방법
- 배열의 요소를 직접 코드를 통해서 없애기
import java.util.ArrayList
를 통해서 contains 매서드를 사용 한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | package main.java; import java.util.ArrayList; public class test { public static void main(String[] args) { String[] goodsList = {"notebook", "TV", "monitor", "keyboard", "mouse", "TV", "monitor", "keyboard"}; //ArrayList ArrayList<String> arrayList = new ArrayList<>(); for(String item : goodsList){ if(!arrayList.contains(item)) arrayList.add(item); } System.out.println(arrayList); //결과 = [notebook, TV, monitor, keyboard, mouse] } } | cs |
- HashSet을 이용해서 중복 제거하기
HashSet
은 자바 Collection 중 Set의 대표적인 클래스이다. 그렇기 때문에 HashSet은 중복된 원소를 허용하지 않으며 순서 역시 고려되지 않는다. 이 문제를 풀때 HashSet 클래스를 사용했는데 선언 하는 방법이 문자열인 경우 각괄호 안에 String 을 넣어주지만 int형으로 선언 할 경우, 각괄호에 Integer 을 넣어주었다… 왜그럴까? 각괄호 안에는 데이터 타임이 들어가는 것이 맞다. 그래서 선언 해주기 위해서는 **HashSet<데이터타입> 변수명 = new HashSet<데이터타입>();** 형식으로 한다. int같은 경우는 원시 자료형으로 이에 해당하는 Wrapper 클래스가 있다. ArrayList, HashSet, HashMap 등은 데이터 저장시 원시 자료형 대신 그에 해당하는 Wrapper 클래스를 사용하는 것이다. 그래서 HashSet을 사용하기 위해서는 int대신 Integer을 사용해주었던 것이다. int외의 다른 Wrapper 클래스는 원시 자료형에서 첫 글자만 대문자로 바꾸어주면 된다. 또한 `HashSet` 에 요소를 넣어주기 위해서는 **.add(요소)** 를 넣어 주었다.데이터타입>데이터타입>
- LinkedHashSet을 이용해서 중복 제거하기
LinkedHashSet
은 중복된 데이터를 저장할 수 없다. 즉, 중복을 제거해준다는 말이다. 그리고 HashSet
과의 차이점은 입력된 순서대로 데이터를 관리한다는 점이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | package main.java; import java.util.LinkedHashSet; public class test { public static void main(String[] args) { String[] goodsList = {"notebook", "TV", "monitor", "keyboard", "mouse", "TV", "monitor", "keyboard"}; LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>(); for(String item : goodsList){ linkedHashSet.add(item); } System.out.println(linkedHashSet); //결과 = [notebook, TV, monitor, keyboard, mouse] } } | cs |
사용 방법은 뭔가 1번의 방식과 비슷하다.
위의 내용은 https://lnsideout.tistory.com/entry/JAVA-%EC%9E%90%EB%B0%94-%EB%B0%B0%EC%97%B4-ArrayList-%EC%A4%91%EB%B3%B5%EC%A0%9C%EA%B1%B0-%EB%AA%A8%EB%93%A0%EB%B0%A9%EB%B2%95
를 참고하였음을 밝힙니다.
댓글남기기