코딩테스트 문제/백준-자바

[백준] 나머지

유호야 2021. 5. 24. 01:16
반응형

3052번

문제

두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 

수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.

입력

첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.

출력

첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.

 


여기서 고민했던 부분은 42로 나눈 나머지 값들을 배열에다가 저장했는데

그 각각의 값들이 중복되는 지 아닌지 어떻게 확인하느냐였다.

일일이 비교하면 겹치는 숫자가 많을 때 어떻게 계산이 되는 지 떠오르지가 않아서

42로 나누는 거니 배열이 42개면 된다, 0부터 41까지! / 근데 답에는 43을 적어놨었다ㅋㅋ 계산 오류

어쨌든 그렇게 해서 0, 1, 2, 3.. 과 같은 값이 나올 테고

나머지가 41이면 41번째 자리에 +1이 될 것이고

나머지가 0이 아닌 값들의 갯수를 더하면 끝!

 

내 제출

import java.util.*;

public class Main{
    public static void main(String args[]){
        Scanner scn = new Scanner(System.in);
	        
	        int[] arr = new int[10];
	        int[] remain = new int[10];
	        int[] fourtyThree = new int[41];
	        int no = 0;
	        
	        for(int i = 0; i < arr.length; i++){
	            arr[i] = scn.nextInt();
	            remain[i] = arr[i]%42; 
	            fourtyThree[arr[i]%42]++;
	        }
	        
	        for(int i=0; i< fourtyThree.length; i++) {
	        	if(fourtyThree[i] != 0) {
	        		no++;
	        	}
	        }
	        
	        System.out.println(no);
        
        
        
    }
}
반응형

'코딩테스트 문제 > 백준-자바' 카테고리의 다른 글

[백준] A+B - 3  (0) 2021.05.27
[백준] 평균  (0) 2021.05.24
[백준] 숫자의 개수  (0) 2021.05.24
[백준] 최댓값  (0) 2021.05.23
[백준] 최소, 최대  (0) 2021.05.23