ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 BAEKJOON[3052] : 나머지 - JAVA (Class-1)
    Dev/코딩테스트 2021. 3. 6. 19:16
    먼저 한마디 하자면 내가 푸는 모든 문제를 블로그에 적는것이 아닌
    
    solved.ac 에서 클래스 단위로 문제를 풀어가면서 시간이 20분 이상 걸린 문제들에 대해서만 포스팅을 할 예정이다.
    
    그렇다는건 나는 개발을 업으로 하면서 이런 간단한 문제도20분 이상 소요했다는것이 너무 절망스럽다.
    
    앞으로 나아질 것이라 생각한다.

    문제 링크 : www.acmicpc.net/problem/3052

     

    3052번: 나머지

    각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다.

    www.acmicpc.net

    먼저 한마디 하자면 내가 푸는 모든 문제를 블로그에 적는것이 아닌

    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);

    생각해보면 어렵지 않은 문제였지만 원래 머리가 좋지 않아서 그런지 이번문제는 조금 헤메어 버렸다.

     

    댓글

Designed by Tistory.