반응형
안녕하세요. BlockDMask 입니다.
다들 즐추 하고 계시죠? 중간에 시간이 좀 떠서 문제를 풀어 보았습니다.
170814 문제 빼먹음 -> 171004 완료
0. 제목
백준 2941 크로아티아 알파벳
BOJ 2941 크로아티아 알파벳
1. 문제 설명
이전 운영체제에서는 크로아티아 알파벳을 입력할 수 없었다고 한다.
아래 그림과 같이 크로아티아 알파벳을 변경해서 입력했습니다.
크로아티아 알파벳 |
변경 |
č |
c= |
ć |
c- |
dž |
dz= |
ñ |
d- |
lj |
lj |
nj |
nj |
š |
s= |
ž |
z= |
이런식으로 바꾸어 사용합니다.
예를 들어,
ljes=njak 는 크로아티아 알파벳 6개로(lj, e, š, nj, a, k)로 이루어져있다.
ddz=z= 는 크로아티아 알파벳 3개로(d, dz=, z=)로 이루어져있다.
단어가 주어졌을때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
최대 100글자의 단어가 입력으로 들어오고, 알파벳 소문자와 '-', '='로만 이루어져 있다.
2. 풀이 과정
문자열을 string으로 받아서
크로아티아 알파벳인 경우를 확인해서 넘긴다.
3. 코드
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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | //BOJ 2941 크로아티아 알파벳 //c=, c-, dz=, d-, lj, nj, s=, z= #include<iostream> #include<string> using namespace std; int solution(string& str){ int count =0; for(int i=0; i<str.length(); i++){ if(str[i] == 'c'){ //c인경우 if(str[i+1] == '=' || str[i+1] == '-'){ //뒷글자 확인 i++; } }else if(str[i] == 'd'){ if(str[i+1] == '-'){ i++; }else if(str[i+1] == 'z' && str[i+2] == '='){ i++; i++; } }else if(str[i] == 'l'){ if(str[i+1] == 'j'){ i++; } }else if(str[i] == 'n'){ if(str[i+1] == 'j'){ i++; } }else if(str[i] == 's'){ if(str[i+1] == '='){ i++; } }else if(str[i] == 'z') { if (str[i + 1] == '=') { i++; } } count++; } return count; } int main(void){ string str; cin >> str; int result; result = solution(str); cout << result; return 0; } | cs |
4. 인증
문제 출처 - https://www.acmicpc.net/problem/2941
감사합니다. 하트 꾹 부탁드립니다.
반응형
'<알고리즘 문제풀이&연습> > [C++] 백준, 프로그래머스 등등' 카테고리의 다른 글
[백준 1920] 수 찾기 (이진탐색) (0) | 2017.10.08 |
---|---|
[백준 2562] 최대값 (0) | 2017.10.08 |
[백준 2309] 일곱 난쟁이 (브루트 포스) (0) | 2017.10.06 |
[백준 4673] 셀프 넘버 (2) | 2017.10.04 |
[백준 5622] 다이얼 (0) | 2017.10.03 |
[백준 13458] 시험 감독 (1) | 2017.09.26 |
[백준 2292] 벌집 (1) | 2017.09.26 |
[백준 1427] 소트인사이드 (2) | 2017.09.23 |