๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Study/์ฝ”ํ…Œ

๋ฐฑ์ค€ ๋ธŒ๋ก ์ฆˆ2 3052๋ฒˆ: ๋‚˜๋จธ์ง€

2023.03.28
C++

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

 

3052๋ฒˆ: ๋‚˜๋จธ์ง€

๊ฐ ์ˆ˜๋ฅผ 42๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋Š” 39, 40, 41, 0, 1, 2, 40, 41, 0, 1์ด๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ’์€ 6๊ฐœ๊ฐ€ ์žˆ๋‹ค.

www.acmicpc.net

๋ฌธ์ œ

๋‘ ์ž์—ฐ์ˆ˜ 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๊ฐœ๊ฐ€ ์žˆ๋‹ค.

์ฝ”๋“œ

#include <iostream>
using namespace std;

int main() {
    int arr[10] = {};
    int count = 0;
    bool sameNum;   // ๊ฐ™์€ ์ˆ˜๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€์— ๋Œ€ํ•œ boolํ˜• ๋ณ€์ˆ˜
    
    for (int i = 0; i < 10; i++) {
        cin >> arr[i];
        arr[i] = arr[i] % 42;
        sameNum = false;
        
        for (int j = 0; j < i; j++) {
            if (arr[i] == arr[j]) {
                sameNum = true;     // ๊ฐ™์€ ์ˆ˜๊ฐ€ ์กด์žฌ
                break;
            }
            else {
                continue;
            }
        }
        if (sameNum == false) {     //๋ชจ๋‘ arr[i]==arr[j]๊ฐ€ ์•„๋‹๊ฒฝ์šฐ
            count++;
        }
    }
    cout << count << endl;

    return 0;
}

ํ’€์ด

์‚ฌ์šฉํ•œ ๋ณ€์ˆ˜:

- arr[10] : ์ž…๋ ฅํ•œ ๊ฐ’์„ ๋„ฃ๊ธฐ ์œ„ํ•œ ๋ฐฐ์—ด ๋ณ€์ˆ˜

- count : ๋‚˜๋จธ์ง€๊ฐ€ ๋‹ค๋ฅธ ์ˆ˜๊ฐ€ ๋ช‡๊ฐœ ์žˆ๋Š”์ง€ ์„ธ๊ธฐ ์œ„ํ•œ intํ˜• ๋ณ€์ˆ˜

- sameName: ๊ฐ™์€ ์ˆ˜๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ์•„๋‹Œ์ง€ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•œ boolํ˜• ๋ณ€์ˆ˜

 

1. for ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ 10๊ฐœ์˜ ์ˆ˜๋ฅผ ์ž…๋ ฅํ•ด arr ๋ฐฐ์—ด์— ๋„ฃ๋Š”๋‹ค.

2. for ๋ฌธ์•ˆ์— ์ด์ค‘ for ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ™์€ ์ˆ˜๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ๋น„๊ตํ•œ๋‹ค.

  1) arr[i]๋ฒˆ์งธ์™€ i๋ฒˆ์งธ ์ด์ „ ๋ฐฐ์—ด๋“ค์„ ๋น„๊ตํ•œ๋‹ค.

  2) sameNum์ด๋ผ๋Š” boolํ˜• ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•œ๋‹ค.
      true๋ฉด ๊ฐ™์€ ์ˆ˜๊ฐ€ ์กด์žฌ, false๋ฉด ๊ฐ™์€ ์ˆ˜๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์•„ count๋ฅผ 1์ฆ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

  3) for ๋ฌธ์„ ๋น ์ ธ๋‚˜์™€ if๋ฌธ์„ ํ†ตํ•ด sameNum๊ฐ€ false๋ฉด(๊ฐ™์€ ์ˆ˜๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด) count๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

  4) ๋ฐ˜๋ณต๋ฌธ์„ ์™„์ „ํžˆ ๋น ์ ธ๋‚˜์˜ค๋ฉด count๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

๋‹ค๋ฅธ ๋ฐฉ๋ฒ•

#include <iostream>
using namespace std;

int main() {
    int arr[42] = {0,};
    int n;
    int count = 0;

    for (int i = 0; i < 10; i++) {
        cin >> n;
        arr[n % 42] = 1;
    }
    for (int j = 0; j <= 42; j++) {
        if (arr[j] == 1) count++;
    }
    cout << count << endl;

    return 0;
}

 

clude <iostream>
using namespace std;

int main() {
    int arr[42] = {0,};
    int n;
    int count = 0;

    for (int i = 0; i < 10; i++) {
        cin >> n;
        arr[n % 42] = 1;
    }
    for (int j = 0; j <= 42; j++) {
        if (arr[j] == 1) count += arr[j];
    }
    cout << count << endl;
    
    return 0;
}