C#/백준 알고리즘

2022.01.25 [백준] C# 크로아티아 알파벳

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

문제

예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.

크로아티아 알파벳변경
č c=
ć c-
dz=
đ d-
lj lj
nj nj
š s=
ž z=

예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.

dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.

입력

첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다.

단어는 크로아티아 알파벳으로 이루어져 있다. 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다.

출력

입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.


풀이 1

if문을 이용하여 1개 이상의 문자로 이루어진 크로아티아 알파벳을 cnt로 카운트 해준 뒤, 전체 길이에서 cnt를 빼준다.

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
using System;
class Program{
    static void Main(){
        string s = Console.ReadLine();
        int cnt =0;
        for(int i=0;i<s.Length-1;i++){
            if(s[i]=='c'&&s[i+1]=='-'||s[i+1]=='='){
                cnt++;
            }else if(i<s.Length-2&&s[i]=='d'&&s[i+1]=='z'&&s[i+2]=='='){
                cnt++;
            }else if(s[i]=='d'&&s[i+1]=='-'){
                cnt++;
            }else if(s[i]=='n'&&s[i+1]=='j'){
                cnt++;
            }else if(s[i]=='l'&&s[i+1]=='j'){
                cnt++;
            }else if(s[i]=='z'&&s[i+1]=='='){
                cnt++;
            }else if(s[i]=='s'&&s[i+1]=='='){
                cnt++;
            }
        }
        Console.Write(s.Length-cnt);
    }
}
cs

풀이 2

풀이 1의 코드도 나쁘지 않지만 풀이 방법을 검색 중, 다른 괜찮은 코드를 발견해서 사용해 보았다.

Replace(문자열1, 문자열2)을 이용하여 문자열 안에 문자열1이 있으면 문자열2로 치환해 주었다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System;
using System.Linq;
class Program{
    static void Main(){
        string s = Console.ReadLine();
        string[] croatiaAlphabet = { "c=""c-""dz=""d-""lj""nj""s=""z=" };
        for(int i=0;i<croatiaAlphabet.Length;i++){
            //문자열에 크로아티아알파벳이 있으면 e로 치환.
            //크로아티아알파벳을 지우면 다른 문자열이 생성될 수도 있기때문에 위의 문자열에 없은 e로 치환
            s=s.Replace(croatiaAlphabet[i],"e");
        }
        Console.Write(s.Length);
        
    }
}
cs

 

728x90
반응형