-
백준 BAEKJOON[3052] : 나머지 - JAVA (Class-1)Dev/코딩테스트 2021. 3. 6. 19:16
먼저 한마디 하자면 내가 푸는 모든 문제를 블로그에 적는것이 아닌 solved.ac 에서 클래스 단위로 문제를 풀어가면서 시간이 20분 이상 걸린 문제들에 대해서만 포스팅을 할 예정이다. 그렇다는건 나는 개발을 업으로 하면서 이런 간단한 문제도20분 이상 소요했다는것이 너무 절망스럽다. 앞으로 나아질 것이라 생각한다.
문제 링크 : www.acmicpc.net/problem/3052
먼저 한마디 하자면 내가 푸는 모든 문제를 블로그에 적는것이 아닌
solved.ac 에서 클래스 단위로 문제를 풀어가면서 시간이 20분 이상 걸린 문제들에 대해서만 포스팅을 할 예정이다.
그렇다는건 나는 개발을 업으로 하면서 이런 간단한 문제도20분 이상 소요했다는것이 너무 절망스럽다.
앞으로 나아질 것이라 생각한다.
문제
두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.
수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.
입력
첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.
출력
첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.
예제 입·출력
더보기예제 입력 1
1 2 3 4 5 6 7 8 9 10
예제 출력 1
10
각 수를 42로 나눈 나머지는 1, 2, 3, 4, 5, 6, 7, 8, 9, 10이다.
예제 입력 2
42 84 252 420 840 126 42 84 420 126
예제 출력 2
1
모든 수를 42로 나눈 나머지는 0이다.
예제 입력 3
39 40 41 42 43 44 82 83 84 85
예제 출력 3
6
각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다.
이번 문제는 자연수 10개를 입력 후 입력한 각각의 값에 대하여 42로 나눈 나머지 값 중
서로 다른 값의 카운트를 세는 문제이다.
Scanner sc = new Scanner(System.in); int[] arr = new int[10]; int[] targetArr = new int[10]; int count = 0; for(int i=0; i<10; i++) { arr[i] = sc.nextInt(); targetArr[i] = arr[i]%42; //42로 나눈 나머지 값들을 배열에 저장 } for(int i=0; i<10; i++) { int temp =0; for(int j=i+1; j<10; j++) { if(targetArr[i] == targetArr[j]) { //현재 값과 나머리 값들을 비교하여 같은경우 temp를 1씩 더해준다. temp++; } } if(temp == 0) { // temp값이 0이라면 다른값과 겹치지 않음을 알수있다. count++; } } System.out.println(count);
생각해보면 어렵지 않은 문제였지만 원래 머리가 좋지 않아서 그런지 이번문제는 조금 헤메어 버렸다.
'Dev > 코딩테스트' 카테고리의 다른 글
구름LEVEL : 근묵자흑 - JAVA (0) 2021.03.18 백준 BAEKJOON[2231] : 분해합 - JAVA (Class-2) (0) 2021.03.11 백준 BAEKJOON[10250] : ACM호텔- JAVA (Class-2) (0) 2021.03.07 백준 BAEKJOON[2675] : 문자열 반복 - JAVA (Class-1) (0) 2021.03.06 코딩테스트 시작 (0) 2021.02.24