Posts 백준 1. 나머지
Post
Cancel

백준 1. 나머지

나머지

문제

두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.

입력 1 2 3 4 5 6 7 8 9 10

출력 10

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
30
31
32
33
34
public static void main(String[] args) {	
//42로 나누었을때 서로다른 나머지가 몇개 있는지 출력한다.
  Scanner scn = new Scanner(System.in);
  int i,j;
  int cnt = 10;
  int[] arr = new int[10];
  int[] arr2 = new int[10];

  for(i=0; i<10; i++)
  {
    arr[i]=scn.nextInt();
  }

  for(i=0; i<10; i++)
  {
    arr2[i]=arr[i]%42;
  }

  for(i=1; i<arr2.length; i++)
  {
    int target = arr2[i]; // key값
    j = i-1; // 앞에 비교할 대

    while(j >= 0 )
    {
      if(arr2[j] == target) //비교할대상이랑 key값이랑 같다면
      {
        cnt--;
        break;
      }
      j--;
    }
  }
  System.out.println(cnt);

처음엔 선택정렬을 사용해서 구현했었다.

비교할대상의 중복값을찾을때

  1. 대표값, 비교할값이 증가하면서 대표값이 증가되면서 증가된 대표값의 전자리수를 비교할수없었다.

    Desktop View

따라서 서치끝에 삽입정렬을 넣으면 뒤에서 앞값까지 중복체크를 해줄수있었다.

This post is licensed under CC BY 4.0 by the author.