gimmickbutreal
[백준/자바] 3052번 - Java 본문
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
32
33
34
35
36
37
38
39
|
// 두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.
// 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.
// 첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.
// 첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.
import java.util.Scanner; // Scanner 사용을 위해서 java.util.Scanner class를 import
import java.io.IOException; // 예외처리 class import
public class Main {
public static void main(String[] args) throws IOException {
// 반복문을 사용하여 42로 나눈 나머지 값 중에서 다른 값을 배열 변수에 넣기 위한 예외처리
Scanner sc = new Scanner(System.in); // Scanner class의 객체 생성
// System in = 입력한 값을 바이트 단위로 읽음
int[] arr = new int[10]; // 입력값 배열 입력값은 10개임
int[] arr2 = new int[1000]; // 전체 배열
int a = 42; // 문제에서 요구한 조건
int count = 0; // 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 알아보기 위한 값
for (int i=0; i<10; i++) { // 10번 반복
int n = sc.nextInt(); // int형 정수를 입력받는 method
arr[i] = n % a; // 정수를 42로 나눈 값의 나머지 10개를 arr에 넣어줌 (배열의 길이=10)
}
for (int i=0; i<arr.length; i++) { // 배열의 길이를 알 수 있는 함수 arr.length = 10번 반복
arr2[arr[i]]++; // arr값을 arr2에 넣어주어 1씩 증가시킴 >> 값이 존재하면 1, 없으면 0
}
for (int i = 0; i<arr2.length; i++) { // arr2 length = 10번 반복
if (arr2[i]!=0) { // arr2의 배열의 길이가 0이 아니라면 (입력한 정수를 42로 나누었을 때, 나머지가 다른 값이 있다면)
count++; // 0부터 1씩 커지는 값 (나머지가 다른 값들의 수를 구함)
// arr2 배열의 길이가 0이 아니라면, 해당 값에 해당하는 정수를 출력
}
}
System.out.println(count); // 임의의 1000 이하 양의 정수 10개를 42로 나눈 값 중에서 나머지가 다른 값 출력
sc.close(); // Scanner class 닫아주기
}
}
|
cs |
tip)
- Scanner를 이용한 코드는 길어지고 느려짐을 이번 문제를 통해 확실히 이해했다. 다른 방법을 찾아야 한다.
'Algorithm > Java' 카테고리의 다른 글
[백준/자바] 8958번 해설 - Java (0) | 2022.02.06 |
---|---|
[백준/자바] 1546번 - java (0) | 2022.02.05 |
[백준/자바] 2577번 - Java (0) | 2022.02.03 |
[백준/자바] 2562번 - Java (0) | 2022.02.02 |
[백준/자바] 10818번 - Java (0) | 2022.02.01 |