실패 결과
답은 같으나
문제푸는 방식이 잘못 된듯 싶다
import java.util.Scanner;
public class Main4 {
// 두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.
//
// 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.
//
// 입력
// 첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.
//
// 출력
// 첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.
//
// 예제 입력 1
// 39
// 40
// 41
// 42
// 43
// 44
// 82
// 83
// 84
// 85
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num[] = new int[10];
int anotherNum[] = new int[10];
for (int i = 0; i < 10; i++) {
num[i] = scanner.nextInt();
anotherNum[i] = num[i] % 42;
}
int count = 0;
for (int i = 0; i < anotherNum.length - 1; i++) {
for (int j =i + 1; j < anotherNum.length; j++) {
if(anotherNum[i] == anotherNum[j]) {
count++;
}
}
}
System.out.println(anotherNum.length - count);
}
}
그래서 새로 접근을 시도했다
HashSet을 사용해서 중복을 제거하는 방식으로 접근하기로했다.
hash의 사이즈를 출력하기로 하였다.
import java.util.HashSet;
import java.util.Scanner;
public class Main4 {
// 두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.
//
// 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.
//
// 입력
// 첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.
//
// 출력
// 첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.
//
// 예제 입력 1
// 39
// 40
// 41
// 42
// 43
// 44
// 82
// 83
// 84
// 85
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
HashSet<Integer> hashSet = new HashSet<Integer>();
int num[] = new int[10];
for (int i = 0; i < num.length; i++) {
num[i] = scanner.nextInt() % 42;
}
for (int i = 0; i < num.length; i++) {
hashSet.add(num[i]);
}
System.out.println(hashSet.size());
}
}
'백준 문제 풀기 > Array' 카테고리의 다른 글
백준 Array문 단계별 풀기 - 8958번 (0) | 2019.12.05 |
---|---|
백준 Array문 단계별 풀기 - 1546번 (0) | 2019.12.05 |
백준 Array문 단계별 풀기 - 2577번 (0) | 2019.12.03 |
백준 Array문 단계별 풀기 - 2920번 (0) | 2019.12.01 |
백준 Array문 단계별 풀기 - 2562번 (0) | 2019.12.01 |