- 이중 for문 이용
- 앞 뒤 문자 비교 && 해당 문자와 앞에서부터 해당 문자 전까지 비교
#include <iostream>
#include <string>
using namespace std;
int main() {
int N;
string str;
int cnt = 0;
cin >> N;
for (int i = 0; i < N; i++) {
cin >> str;
bool check = true;
for (int j = 0; j < str.length(); j++) {
for (int k = 0; k < j; k++) {
if (str[j] != str[j - 1] && str[j] == str[k]) {
check = false;
break;
}
}
}
if (check) cnt++;
}
cout << cnt;
return 0;
}
N => 입력 받을 단어 개수
str => 입력 받을 단어(문자열)
cnt => 그룹단어인 단어 개수
check => 그룹단어인지 체크(true or false)
ex)
2
happy
test
i = 0
str.length() = 5
j | k | if (str[j] != str[j - 1] && str[j] == str[k]) | check |
j = 0 | k < 0 | 체크x |
true |
j = 1 | k < 1 -> k = 0 | str[1] != str[1 - 1] && str[1] == str[0] a != h && a == h 1 && 0 -> false |
true |
j = 2 | k < 2 -> k = 0 | str[2] != str[2 - 1] && str[2] == str[0] p != a && p == h 1 && 0 -> false |
true |
k < 2 -> k = 1 | str[2] != str[2 - 1] && str[2] == str[1] p != a && p == a 1 && 0 -> false |
true | |
j = 3 | k < 3 -> k = 0 | str[3] != str[3 - 1] && str[3] == str[0] p != p && p == h 0 && 0 -> false |
true |
k < 3 -> k = 1 | str[3] != str[3 - 1] && str[3] == str[1] p != p && p == a 0 && 0 -> false |
true | |
k < 3 -> k = 2 | str[3] != str[3 - 1] && str[3] == str[2] p != p && p == p 0 && 1 -> false |
true | |
j = 4 | k < 4 -> k = 0 | str[4] != str[4 - 1] && str[4] == str[0] y != p && y == h 1 && 0 -> false |
true |
k < 4 -> k = 1 | str[4] != str[4 - 1] && str[4] == str[1] y != p && y == a 1 && 0 -> false |
true | |
k < 4 -> k = 2 | str[4] != str[4 - 1] && str[4] == str[2] y != p && y == p 1 && 0 -> false |
true | |
k < 4 -> k = 3 | str[4] != str[4 - 1] && str[4] == str[3] y != p && y == p 1 && 0 -> false |
true |
if(check) = if(true) -> cnt++ -> cnt = 1
i = 1
str.length() = 4
j | k | if (str[j] != str[j - 1] && str[j] == str[k]) | check |
j = 0 | k < 0 | 체크x |
true |
j = 1 | k < 1 -> k = 0 | str[1] != str[1 - 1] && str[1] == str[0] e != t && e == t 1 && 0 -> false |
true |
j = 2 | k < 2 -> k = 0 | str[2] != str[2 - 1] && str[2] == str[0] s != e && s == t 1 && 0 -> false |
true |
k < 2 -> k = 1 | str[2] != str[2 - 1] && str[2] == str[1] s != e && s == e 1 && 0 -> false |
true | |
j = 3 | k < 3 -> k = 0 | str[3] != str[3 - 1] && str[3] == str[0] t != s && t == t 1 && 1 -> true -> break; (반복 종료) |
false |
하나의 반복문을 빠져나감 | 하나의 반복문을 빠져나감 |
||
하나의 반복문을 빠져나감 | 하나의 반복문을 빠져나감 |
if(check) = if(false)
결국, cnt = 1 이 되고, 1이 출력됨
'코딩테스트 > programming_C++' 카테고리의 다른 글
baekjoon #2292_벌집_c++ (0) | 2021.10.27 |
---|---|
baekjoon #1712_손익분기점 (0) | 2021.10.27 |
baekjoon #2941_크로아티아 알파벳_c++ (0) | 2021.10.26 |
baekjoon #5622_다이얼_c++ (0) | 2021.10.26 |
baekjoon #2908_상수_c++ (0) | 2021.10.26 |