๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœจ Algorithm

[๋ฐฑ์ค€/C++] 1316๋ฒˆ: ๊ทธ๋ฃน ๋‹จ์–ด ์ฒด์ปค

by nitronium102 2022. 6. 26.

๋ฌธ์ œ

๊ทธ๋ฃน ๋‹จ์–ด๋ž€ ๋‹จ์–ด์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ๋ฌธ์ž์— ๋Œ€ํ•ด์„œ, ๊ฐ ๋ฌธ์ž๊ฐ€ ์—ฐ์†ํ•ด์„œ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒฝ์šฐ๋งŒ์„ ๋งํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, ccazzzzbb๋Š” c, a, z, b๊ฐ€ ๋ชจ๋‘ ์—ฐ์†ํ•ด์„œ ๋‚˜ํƒ€๋‚˜๊ณ , kin๋„ k, i, n์ด ์—ฐ์†ํ•ด์„œ ๋‚˜ํƒ€๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ฃน ๋‹จ์–ด์ด์ง€๋งŒ, aabbbccb๋Š” b๊ฐ€ ๋–จ์–ด์ ธ์„œ ๋‚˜ํƒ€๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ฃน ๋‹จ์–ด๊ฐ€ ์•„๋‹ˆ๋‹ค.

๋‹จ์–ด N๊ฐœ๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„ ๊ทธ๋ฃน ๋‹จ์–ด์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๋‹จ์–ด์˜ ๊ฐœ์ˆ˜ N์ด ๋“ค์–ด์˜จ๋‹ค. N์€ 100๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ๋‹จ์–ด๊ฐ€ ๋“ค์–ด์˜จ๋‹ค. ๋‹จ์–ด๋Š” ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ๋งŒ ๋˜์–ด์žˆ๊ณ  ์ค‘๋ณต๋˜์ง€ ์•Š์œผ๋ฉฐ, ๊ธธ์ด๋Š” ์ตœ๋Œ€ 100์ด๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ๊ทธ๋ฃน ๋‹จ์–ด์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

ํ’€์ด

์•ŒํŒŒ๋ฒณ ๊ฐœ์ˆ˜๋งŒํผ์˜ ๋ฒกํ„ฐ๋ฅผ ์ƒ์„ฑํ•ด์„œ ์ƒˆ๋กœ์šด ์•ŒํŒŒ๋ฒณ์ด ๋“ค์–ด์˜ฌ ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น ์•ŒํŒŒ๋ฒณ์˜ ์ธ๋ฑ์Šค๊ฐ’์„ true๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.

๋งŒ์•ฝ ์ด์ „๊ณผ ๋‹ค๋ฅธ ๋ฌธ์ž๊ฐ€ ๋‚˜์˜จ ๊ฒฝ์šฐ์—๋Š” ์ธ๋ฑ์Šค๊ฐ’์„ ํ™•์ธํ•œ๋‹ค. ์ธ๋ฑ์Šค๊ฐ€ true์ด๋ฉด ํ•ด๋‹น ์•ŒํŒŒ๋ฒณ์ด ๋–จ์–ด์ ธ์„œ ๋‚˜ํƒ€๋‚ฌ๋‹ค๋Š” ๋œป์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ฃน ๋‹จ์–ด๊ฐ€ ์•„๋‹ˆ๋‹ค. 

#include <iostream>
#include <vector>
using namespace std;

bool isGroup(string word){
    char c = '.';
    vector<bool> alphabet(26, false);

    for (int i=0; i<word.size(); i++){
        // 1) ์—ฐ์†ํ•ด์„œ ๋‚˜ํƒ€๋‚œ ๋ฌธ์ž์ธ ๊ฒฝ์šฐ
       if (word[i] == c)
            continue;
       // 2) ์ด์ „๊ณผ ๋‹ค๋ฅธ ๋ฌธ์ž
       if (alphabet[word[i] - 'a'])
           return false;
       // ๋ฒกํ„ฐ ์—…๋ฐ์ดํŠธ
       alphabet[word[i]-'a'] = true;
       c = word[i];
    }
    return true;
}

int main(){
    int n;
    int result = 0;
    string word;

    // ์ž…๋ ฅ
    cin >> n;

    while (n--) {
        cin >> word;
        if (isGroup(word))
            result++;
    }

    // ์ถœ๋ ฅ
    cout << result;
}

 

๋Œ“๊ธ€