๐ŸŒฒ Altu-Bitu/๊ตฌํ˜„&์‹œ๋ฎฌ๋ ˆ์ด์…˜

[BOJ S3][C++] ๋ฐฑ์ค€ 2503๋ฒˆ: ์ˆซ์ž ์•ผ๊ตฌ (2%, 4%)

์„ ๋‹ฌ 2022. 10. 6. 18:00
๋ฐ˜์‘ํ˜•

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

 

2503๋ฒˆ: ์ˆซ์ž ์•ผ๊ตฌ

์ฒซ์งธ ์ค„์—๋Š” ๋ฏผํ˜์ด๊ฐ€ ์˜์ˆ˜์—๊ฒŒ ๋ช‡ ๋ฒˆ์ด๋‚˜ ์งˆ๋ฌธ์„ ํ–ˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” 1 ์ด์ƒ 100 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. ์ด์–ด์ง€๋Š” N๊ฐœ์˜ ์ค„์—๋Š” ๊ฐ ์ค„๋งˆ๋‹ค ๋ฏผํ˜์ด๊ฐ€ ์งˆ๋ฌธํ•œ ์„ธ ์ž๋ฆฌ ์ˆ˜์™€ ์˜์ˆ˜๊ฐ€ ๋‹ตํ•œ ์ŠคํŠธ

www.acmicpc.net

 

๋ฌธ์ œ

์ •๋ณด๋ฌธํ™”์ง„ํฅ์› ์ •๋ณด ์˜์žฌ ๋™์•„๋ฆฌ์—์„œ ๋™์•„๋ฆฌ ํ™œ๋™์„ ํ•˜๋˜ ์˜์ˆ˜์™€ ๋ฏผํ˜์ด๋Š” ์‰ฌ๋Š” ์‹œ๊ฐ„์„ ํ‹ˆํƒ€ ์ˆซ์ž์•ผ๊ตฌ ๊ฒŒ์ž„์„ ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

  • ์˜์ˆ˜๋Š” 1์—์„œ 9๊นŒ์ง€์˜ ์„œ๋กœ ๋‹ค๋ฅธ ์ˆซ์ž ์„ธ ๊ฐœ๋กœ ๊ตฌ์„ฑ๋œ ์„ธ ์ž๋ฆฌ ์ˆ˜๋ฅผ ๋งˆ์Œ์†์œผ๋กœ ์ƒ๊ฐํ•œ๋‹ค. (์˜ˆ: 324)
  • ๋ฏผํ˜์ด๋Š” 1์—์„œ 9๊นŒ์ง€์˜ ์„œ๋กœ ๋‹ค๋ฅธ ์ˆซ์ž ์„ธ ๊ฐœ๋กœ ๊ตฌ์„ฑ๋œ ์„ธ ์ž๋ฆฌ ์ˆ˜๋ฅผ ์˜์ˆ˜์—๊ฒŒ ๋ฌป๋Š”๋‹ค. (์˜ˆ: 123)
  • ๋ฏผํ˜์ด๊ฐ€ ๋งํ•œ ์„ธ ์ž๋ฆฌ ์ˆ˜์— ์žˆ๋Š” ์ˆซ์ž๋“ค ์ค‘ ํ•˜๋‚˜๊ฐ€ ์˜์ˆ˜์˜ ์„ธ ์ž๋ฆฌ ์ˆ˜์˜ ๋™์ผํ•œ ์ž๋ฆฌ์— ์œ„์น˜ํ•˜๋ฉด ์ŠคํŠธ๋ผ์ดํฌ ํ•œ ๋ฒˆ์œผ๋กœ ์„ผ๋‹ค. ์ˆซ์ž๊ฐ€ ์˜์ˆ˜์˜ ์„ธ ์ž๋ฆฌ ์ˆ˜์— ์žˆ๊ธด ํ•˜๋‚˜ ๋‹ค๋ฅธ ์ž๋ฆฌ์— ์œ„์น˜ํ•˜๋ฉด ๋ณผ ํ•œ ๋ฒˆ์œผ๋กœ ์„ผ๋‹ค.

์˜ˆ) ์˜์ˆ˜๊ฐ€ 324๋ฅผ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉด 

  • 429๋Š” 1 ์ŠคํŠธ๋ผ์ดํฌ 1 ๋ณผ์ด๋‹ค.
  • 241์€ 0 ์ŠคํŠธ๋ผ์ดํฌ 2 ๋ณผ์ด๋‹ค.
  • 924๋Š” 2 ์ŠคํŠธ๋ผ์ดํฌ 0 ๋ณผ์ด๋‹ค.
  • ์˜์ˆ˜๋Š” ๋ฏผํ˜์ด๊ฐ€ ๋งํ•œ ์ˆ˜๊ฐ€ ๋ช‡ ์ŠคํŠธ๋ผ์ดํฌ ๋ช‡ ๋ณผ์ธ์ง€๋ฅผ ๋‹ตํ•ด์ค€๋‹ค.
  • ๋ฏผํ˜์ด๊ฐ€ ์˜์ˆ˜์˜ ์„ธ ์ž๋ฆฌ ์ˆ˜๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ๋งž์ถ”์–ด 3 ์ŠคํŠธ๋ผ์ดํฌ๊ฐ€ ๋˜๋ฉด ๊ฒŒ์ž„์ด ๋๋‚œ๋‹ค. ์•„๋‹ˆ๋ผ๋ฉด ๋ฏผํ˜์ด๋Š” ์ƒˆ๋กœ์šด ์ˆ˜๋ฅผ ์ƒ๊ฐํ•ด ๋‹ค์‹œ ์˜์ˆ˜์—๊ฒŒ ๋ฌป๋Š”๋‹ค.

ํ˜„์žฌ ๋ฏผํ˜์ด์™€ ์˜์ˆ˜๋Š” ๊ฒŒ์ž„์„ ํ•˜๊ณ  ์žˆ๋Š” ๋„์ค‘์— ์žˆ๋‹ค. ๋ฏผํ˜์ด๊ฐ€ ์˜์ˆ˜์—๊ฒŒ ์–ด๋–ค ์ˆ˜๋“ค์„ ๋ฌผ์–ด๋ณด์•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ๊ฐ๊ฐ์˜ ๋ฌผ์Œ์— ์˜์ˆ˜๊ฐ€ ์–ด๋–ค ๋Œ€๋‹ต์„ ํ–ˆ๋Š”์ง€๊ฐ€ ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค. ์ด ์ž…๋ ฅ์„ ๋ฐ”ํƒ•์œผ๋กœ ์—ฌ๋Ÿฌ๋ถ„์€ ์˜์ˆ˜๊ฐ€ ์ƒ๊ฐํ•˜๊ณ  ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์ˆ˜๊ฐ€ ์ด ๋ช‡ ๊ฐœ์ธ์ง€๋ฅผ ์•Œ์•„๋งžํ˜€์•ผ ํ•œ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž.  

  • ๋ฏผํ˜: 123
  • ์˜์ˆ˜: 1 ์ŠคํŠธ๋ผ์ดํฌ 1 ๋ณผ.
  • ๋ฏผํ˜: 356
  • ์˜์ˆ˜: 1 ์ŠคํŠธ๋ผ์ดํฌ 0 ๋ณผ.
  • ๋ฏผํ˜: 327
  • ์˜์ˆ˜: 2 ์ŠคํŠธ๋ผ์ดํฌ 0 ๋ณผ.
  • ๋ฏผํ˜: 489
  • ์˜์ˆ˜: 0 ์ŠคํŠธ๋ผ์ดํฌ 1 ๋ณผ.

์ด๋•Œ ๊ฐ€๋Šฅํ•œ ๋‹ต์€ 324์™€ 328, ์ด๋ ‡๊ฒŒ ๋‘ ๊ฐ€์ง€์ด๋‹ค.

์˜์ˆ˜๋Š” ๋™์•„๋ฆฌ์˜ ๊ทœ์œจ์„ ์ž˜ ๋”ฐ๋ฅด๋Š” ์ฐฉํ•œ ์•„์ด๋ผ ๋ฏผํ˜์ด์˜ ๋ฌผ์Œ์— ๊ณง์ด๊ณง๋Œ€๋กœ ์ •์งํ•˜๊ฒŒ ๋‹ตํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์˜์ˆ˜์˜ ๋‹ต๋“ค์—๋Š” ๋ชจ์ˆœ์ด ์—†๋‹ค.

๋ฏผํ˜์ด์˜ ๋ฌผ์Œ๋“ค๊ณผ ๊ฐ๊ฐ์˜ ๋ฌผ์Œ์— ๋Œ€ํ•œ ์˜์ˆ˜์˜ ๋‹ต์ด ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์งˆ ๋•Œ ์˜์ˆ˜๊ฐ€ ์ƒ๊ฐํ•˜๊ณ  ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ๋‹ต์˜ ์ด ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์—๋Š” ๋ฏผํ˜์ด๊ฐ€ ์˜์ˆ˜์—๊ฒŒ ๋ช‡ ๋ฒˆ์ด๋‚˜ ์งˆ๋ฌธ์„ ํ–ˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” 1 ์ด์ƒ 100 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. ์ด์–ด์ง€๋Š” N๊ฐœ์˜ ์ค„์—๋Š” ๊ฐ ์ค„๋งˆ๋‹ค ๋ฏผํ˜์ด๊ฐ€ ์งˆ๋ฌธํ•œ ์„ธ ์ž๋ฆฌ ์ˆ˜์™€ ์˜์ˆ˜๊ฐ€ ๋‹ตํ•œ ์ŠคํŠธ๋ผ์ดํฌ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜์™€ ๋ณผ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜, ์ด๋ ‡๊ฒŒ ์ด ์„ธ ๊ฐœ์˜ ์ •์ˆ˜๊ฐ€ ๋นˆ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ

์ฒซ ์ค„์— ์˜์ˆ˜๊ฐ€ ์ƒ๊ฐํ•˜๊ณ  ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ๋‹ต์˜ ์ด ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

ํ’€์ด

 

2%์—์„œ ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค ๊ฐ€ ๋œฌ๋‹ค๋ฉด

์ •๋‹ต์ด ๋  ์ˆ˜ ์žˆ๋Š” ์ˆซ์ž๋Š”

์ˆซ์ž 0์ด ํฌํ•จ๋˜์ง€ ์•Š๊ณ  ์„œ๋กœ๋‹ค๋ฅธ ์ˆซ์ž๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ์•ผํ•œ๋‹ค๋Š”

์กฐ๊ฑด์ด ์žˆ๋‹ค๋Š”์ ์— ์œ ์˜ํ•˜์ž

 

4%์—์„œ ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค ๊ฐ€ ๋œฌ๋‹ค๋ฉด

์ˆซ์ž์—ด์— 0์ด ํฌํ•จ๋˜์ง€ ์•Š์•„์•ผํ•œ๋‹ค๋Š” ์กฐ๊ฑด์„ ์œ ์˜ํ•˜์ž

(๋ณธ ํ’€์ด์—์„œ๋Š” int ๊ฐ€ ์•„๋‹Œ string์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์คฌ๊ธฐ์— ansString[0]=='0' ์ด๋ฉด ์ œ์™ธ์‹œํ‚ค๋„๋ก ์ฝ”๋“œ๋ฅผ ์งฐ๋‹ค.)

 

// Authored by : seondal
// Co-authored by : -

// #include <bits/stdc++.h>
#include <iostream>
#include <vector>

using namespace std;

struct input {
    string number;
    int strike;
    int ball;
};

int n;
vector<input> v;

// ์ •๋‹ต๋ฌธ์ž์—ด์ด i๋ฒˆ์งธ ์ผ€์ด์Šค์— ํ•ด๋‹นํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
bool isCaseRight(int i, string ansString) {
        string num = v[i].number;
        int b=0, s=0;
        
        for(int j=0; j<3; j++) {
            for(int k=0; k<3; k++) {
                if(num[j]==ansString[k]) {
                    if(j==k)
                        s++;
                    else
                        b++;
                }
            }
        }
        
        if(b==v[i].ball && s==v[i].strike)
            return true;
        return false;
}

// i๊ฐœ์˜ ์ผ€์ด์Šค์ค‘ ๋‹จ ํ•˜๋‚˜๋ผ๋„ ์•ˆ๋งž์œผ๋ฉด false
bool isNumRight(string ansString) {
    for(int i=0; i<n; i++)
        if(!isCaseRight(i, ansString))
            return false;
    return true;
}

int solution() {
    int ans=0;
    
    for(int i=123; i<999; i++) {
        // ๋‹ต์ด๋  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž์—ด๋“ค์„ ์ „๋ถ€ ๋‹ค ๋Œ์•„๋ณธ๋‹ค. (๋ถ€๋ฅดํŠธํฌ์Šค)
        string ansString = to_string(i);
        
        // ๋‹ต ์ˆซ์ž์—ด์—๋Š” ์ˆซ์ž 0์„ ์ œ์™ธํ•œ ์„œ๋กœ ๋‹ค๋ฅธ ์ˆซ์ž๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ์–ด์•ผํ•œ๋‹ค.
        if(ansString[0]=='0' || ansString[1]=='0' || ansString[2]=='0')
            continue;
        if(ansString[0]==ansString[1] || ansString[1]==ansString[2] || ansString[2]==ansString[0])
            continue;
        
        if(isNumRight(ansString))
            ans++;
    }
    
    return ans;
}

int main() {
    ios_base :: sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);
    
    cin >> n;
    for(int i=0; i<n; i++) {
        string n;
        int s,b;
        cin >> n >> s >> b;
        v.push_back({n,s,b});
    }
    
    cout << solution();
    
    return 0;
}

/*
 */

 

๋ฐ˜์‘ํ˜•