Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 코테준비
- 연속부분수열
- 누적 계산
- 점수계산
- 아스키코드
- ArrayList
- 임시반장 정하기
- 최대 길이
- array
- 가장 짧은 문자거리
- Pointer
- java
- 등수구하기
- 투 포인터
- 10991
- GitHub #Commit #BaekJoon
- 알고리즘
- 두 배열 합치기
- 10992
- 큰 수 출력하기
- Two Pointer
- 백준
- 배열
- 자바
- 공통원소 구하기
- 보이는 학생
- 인프런
- 뒤집은 소수
- 격자판
- 모든행과열대각선의합
Archives
- Today
- Total
ezhoon
[백준] 3052_나머지_Java 본문
3052번: 나머지
각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다.
www.acmicpc.net
⚠️주의사항
- 입력 받은 숫자를 42로 나눈 나머지값으로 배열 등록
- 서로 다른 값이 몇 개 있는지 체크 ( 중복 주의 )
문제풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Arrange_3052 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] arr = new int[10];
boolean check;
for (int i = 0; i < arr.length; i++) {
arr[i] = Integer.parseInt(br.readLine()) % 42;
}
int cnt = 0;
for (int i = 0; i < arr.length; i++) {
check = false;
for (int j = i + 1; j < arr.length; j++) {
if (arr[i] == arr[j]) {
check = true;
break;
}
}
if (check == false){
cnt++;
}
}
System.out.println(cnt);
}
}
나름 정석적인 풀이라고 생각합니다. 10개의 숫자를 %42 해서 배열로 입력 받은 후
for문을 이용해서 arr[i] 랑 arr[i+1] 이 같은게 있는지 구분 후 같으면 check = true로 바꾸고 break해서 for문을 빠져나가서 다시 for문을 반복하고 만약 같은게 없으면 check = false 그대로라서 cnt 값이 증가가 됩니다.
그리고 이 문제는 풀이를 한 개 더 작성해보겠습니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
public class Arrange_3052 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
HashSet<Integer> hashSet = new HashSet<Integer>();
for (int i = 0; i < 10; i++) {
hashSet.add(Integer.parseInt(br.readLine()) % 42); // add(값) 값이 중복된게 없으면 추가해주고 내부에 값이 존재하지 않는다면 false 반환
}
System.out.print(hashSet.size()); // 나머지 값들을 알고 싶은게 아닌 나머지 값의 수량을 알고 싶은거라서 size()로 출력
}
}
[Java] 자바 HashSet 사용법 & 예제 총정리
HashSet이란? HashSet은 Set 인터페이스의 구현 클래스입니다. 그렇기에 Set의 성질을 그대로 상속받습니다. Set은 객체를 중복해서 저장할 수 없고 하나의 null 값만 저장할 수 있습니다. 또한 저장 순
coding-factory.tistory.com
다른 사람들의 풀이를 보다가 발견한 방법인데 위 블로그에서 사용법 및 예제를 보고 제가 다시 풀어본 코드입니다.
제가 처음 작성한 코드에서 코드의 길이를 엄청나게 줄일 수 있었습니다.
그렇지만 코드 시간이 줄어들지는 않습니다.
하지만 누가 봐도 두 번째 코드가 HashSet에 대해서 이해하고 있다면 알기 쉽기 때문에 HashSet을 쓴게 좋은 코드라고 생각합니다.
'[Java] 백준 문제풀이 > 1차원 배열' 카테고리의 다른 글
[백준] 8958_OX퀴즈_Java (0) | 2022.01.08 |
---|---|
[백준] 1546_평균_Java (0) | 2022.01.08 |
[백준] 2577_숫자의 개수_Java (0) | 2022.01.07 |
[백준] 2562_최댓값_Java (0) | 2022.01.07 |
[백준] 10818_최소, 최대_Java (0) | 2022.01.07 |
Comments