C#/백준 알고리즘

2022.01.25 [백준] C# 그룹 단어 체커

ian's coding 2022. 1. 25. 02:18
728x90
반응형

 


풀이

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
35
36
37
38
39
40
41
42
43
44
using System;
class Program{
    static void Main(){
        int n = int.Parse(Console.ReadLine());
        int sum=0;
        for(int i=0;i<n;i++){
            //문장에서 알파벳의 사용유무를 확인할 bool형 배열
            //문장에서 사용 되었으면 true로 선언.
            bool[] check = new bool[26];
            string str=Console.ReadLine();
            for(int j=0;j<str.Length;j++){
                //배열의 마지막에서 j와j+1을 비교하면 OutOfRange오류가 발생하므로 
                //범위를 j<str.Length-1로 해줌
                if(j<str.Length-1){
                    //j,j+1 번째의 알파벳이 같으면 continue를 이용해 통화시켜줌
                    if(str[j]==str[j+1])
                        continue;
                    //j,j+1 번째의 알파벳이 다를 때, 해당 알파벳 위치의 check가 true면
                    //그룹 단어가 아니므로 break로 반복문을 나감.
                    //check가 true가 아니면 해당str[j]에 해당하는 알파벳이 이전에
                    //사용되지 않았기 때문에 해당 알파벳 위치의 check를 true로 선언
                    if(str[j]!=str[j+1]){
                        if(check[str[j]-'a'])
                            break;
                        else{
                            check[str[j]-'a']=true;
                        }
                    }
                }
                //배열의 마지막인 j일때 해당 알파벳 위치의 check가 true면 그룹 단어가
                //아니기 때문에 break;
                //마지막 문자엣 check가 true가 아니면 이 문자열은 그룹 문자이므로 sum++;
                if(j==str.Length-1){
                    if(check[str[j]-'a']){
                        break;
                    }else{
                        sum++;
                    }
                }
            }
        }
        Console.Write(sum);
    }
}
cs

check[] 여기서 괄호안에 char형을 쓰면 int형으로 변환하지않도 됨.

 

728x90
반응형