BAEKJOON

BAEKJOON 문제 풀이 : 3052번 나머지

뻠삥 2020. 2. 20. 18:15

문제 : https://www.acmicpc.net/problem/3052

 

3052번: 나머지

문제 두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.  수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오. 입력 첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다. 출력 첫째 줄에, 42로 나누었

www.acmicpc.net

 

주어진 수를 42로 나눈 나머지의 개수를 구하는데, 중복된 값을 제외하고 카운트하는 문제입니다.

 

저의 문제 풀이는 아래와 같습니다.

 

1. 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
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
 
public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        int[] arr = new int[10];
        for (int i = 0; i < 10; i++)
            arr[i] = Integer.parseInt(br.readLine());
        
        boolean[] isExist = new boolean[42];
        for (int i = 0; i < 10; i++)
            isExist[arr[i] % 42= true;
        
        int cnt = 0;
        for (int i = 0; i < 42; i++)
            if (isExist[i] == true)
                cnt++;
        
        bw.write(cnt + "\n");
        
        bw.close();
        br.close();
    }
}
cs

 

2. Python 3

1
2
3
4
5
import sys
 
if __name__ == '__main__':
    nums = [int(sys.stdin.readline()) % 42 for i in range(10)]
    print(len(set(nums)))
cs