해당 문제는 10번동안 입력한 숫자를 42로 나누었을 때 나머지들을 구하고 해당 나머지들의 갯수를 중복 없이 갯수를 구하여 출력하는 문제이다.
처음에는 반복문을 통해 boolean배열을 이용해 나머지를 index로 생각하여 true로 변경하여 나타낸 후, 해당 배열에서 true의 수를 count하는 방식으로 진행했었다.
이후 다른분들의 코딩 결과를 보니 위의 방법보다 코드의 길이가 간결하고 사용하기 쉬운 HashSet 클래스를 알게되었고 해당 방식을 통해 다시 풀어보았다.
HashSet의 특징으로 크게 해시 테이블을 이용하는 것과 중복된 값을 저장하지 않는다는 점이 있었다. 해당 HashSet에 대해서는 나중에 JAVA 카테고리에 포스팅해보려 한다.
<반복문과 boolean배열을 이용한 코딩>
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
boolean[] remainIndex = new boolean[42];
int remainNum;
int cnt = 0;
for (int i = 0; i < 10; i++){
remainNum = Integer.parseInt(br.readLine()) % 42;
remainIndex[remainNum] = true;
}
for (int i = 0; i < 42; i++){
if (remainIndex[i] == true) {
cnt++;
}
}
System.out.println(cnt);
br.close();
}
}
<HashSet을 이용한 코딩>
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Set<Integer> remainIndex = new HashSet<>();
int remainNum;
for (int i = 0; i < 10; i++){
remainNum = Integer.parseInt(br.readLine()) % 42;
remainIndex.add(remainNum);
}
System.out.println(remainIndex.size());
br.close();
}
}
3052번: 나머지
각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다.
www.acmicpc.net
» 제가 작성한 글의 내용중 잘못된 부분 및 수정해야 할 사항이 있으면 댓글로 말씀부탁드립니다.
확인 후 다시 공부하여 수정하도록 하겠습니다. 끝까지 읽어주셔서 감사합니다 !! 😀
'Algorithm' 카테고리의 다른 글
백준 2675번 JAVA (문자열 반복) (0) | 2023.02.25 |
---|---|
백준 8958번 JAVA (OX퀴즈) (0) | 2023.02.20 |
백준 5597번 JAVA (과제 안 내신 분..?) (0) | 2023.02.17 |
백준 2562번 JAVA11(배열 최댓값) (0) | 2023.02.16 |
백준 10818번 JAVA11(배열 최소 최대) (0) | 2023.02.16 |