티스토리 뷰
반응형
바로 코드로 들어보자.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Q3052 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 10 개 숫자를 42로 나눈 나머지
int[] arr = new int[42];
int count=0;
for(int i=0; i<10; i++) {
int N = Integer.parseInt(br.readLine());
int mod = N%42;
arr[mod]++;
}
for(int i=0; i<42; i++) {
if(arr[i]>0) {
count++;
}
}
System.out.println(count);
}
}
코드를 간단히 설명하면 다음과 같다.
우선 배열의 길이를 42로 생성했는데,
문제에서 42로 나눈 나머지의 갯수를 출력하라했으므로,
자연수 N을 42로 나누면 나머지의 범위는 0~41이므로
배열의 크기를 42로 생성했다.
int mod=N%42; 코드에서
입력받은 숫자 N을 42로 나눈 나머지를 변수에 담았고,
arr[mod]++; 를 통해 arr의 mod번째 칸에 값을 +해주었다.
근데 문제에서 요구한 출력값은 나머지의 '종류'이기 때문에
for문을 다시 한번 돌려서 arr[i]>0일때 count변수를 증가시켜
count 변수를 출력시켰다.
다른 방법이 있을까 하고 인터넷을 검색해보다 'HashSet'을 이용해 풀 수 있는 방식을 알아냈다.
(참고한 블로그는 마지막에 '출처'로 표시해두겠다.)
HashSet을 이용한 코드를 알아보자.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
public class Q3052_2 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
HashSet<Integer> h = new HashSet<>();
for(int i=0; i<10; i++) {
int N = Integer.parseInt(br.readLine());
int mod = N % 42;
h.add(mod);
}
System.out.println(h.size());
}
}
HashSet의 특징은
중복되는 원소를 넣으면 하나의 값만 저장되기 때문에,
이 문제에서 HashSet을 이용하면
결국 HashSet의 길이만 최종적으로 출력하면 되기 때문에 효율적이다!
HashSet.size()는 HashSet의 크기를 반환하는 메서드로,
여기서는 서로 다른 나머지의 개수(출력값)이 들어간다.
그럼 두 풀이의 실행시간을 비교해보자.
실행결과
문제 자체가 그리 어려운 문제는 아니었다.
문제를 보다 이해가 안되거나 설명이 이상한 부분이 잇으면 댓글을 활용해주길 바란다.
두 번째 HastSet 문제 풀이 출처(필자가 조금 응용함.)
반응형
'코딩테스트 > 백준 자바' 카테고리의 다른 글
[코딩테스트] 백준 자바 8958번 (0) | 2022.03.21 |
---|---|
[코딩테스트] 백준 자바 1546번 및 내가 문제를 푸는 방식 (0) | 2022.03.18 |
[코딩테스트] 백준 자바 10818번 (0) | 2022.03.14 |
[코딩테스트] 백준 자바 10951번 (0) | 2022.03.09 |
[코딩테스트] 백준 자바 10952번 (0) | 2022.03.09 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 해커랭크 챌린지
- 챌린지
- ORM
- 강의
- 22 정보처리산업기사
- queue
- hackerrank
- 22 정보처리 산업기사
- BAEKJOON
- challenges
- LinkedList
- 해커랭크 자바
- 백준
- 자바의 정석
- 디버깅
- 해커랭크
- 정보처리산업기사
- hackerrank challenges
- 그리디
- 해커랭크 자바 챌린지
- 소스코드
- stack
- 정보처리산업기사 공부법
- Java
- 개발자
- 정보처리 산업기사
- 자바
- 풀이
- 코드
- JPA
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함