일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- meta charset=
- 히라이켄
- React.js
- 백준 11720
- 異端なスター
- !doctype html
- HEAD
- ㅇ
- Official髭男dism
- 아스키코드로 숫자 넣기
- 아스키코드
- 백준4344번
- 십진수 8진수
- 마법이라고 불러도 좋을까?
- 백준 8958번
- 魔法っていっていいかな
- 십진수 16진수
- 정수와 상수
- 오버플로우
- 자료형
- html
- 平井堅
- 문자열숫자를 숫자로
- body
- Today
- Total
갓비니
★코딩 문제 연습(7단계 / 백준 1316번 - 그룹단어 체커) C++ 본문
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
|
#include <iostream>
#include <string>
using namespace std;
int main() {
int number = 0;
int j = 0;
int count = 0;
string str;
cin >> number;
for (int i = 0; i<number; i++) {
cin >> str;
int switch_group[26] = { 0, };
switch_group[str[0] - 97] = 1;
for (j = 1; j<str.length(); j++) {
if (str[j - 1] != str[j]) {
int index = str[j] - 97;
if (switch_group[index] == 0)
switch_group[index]++;
else
break;
}
}
if (j == str.length())
count++;
}
cout << count;
}
|
cs |
for문은 for문 들어가기 전에 i값을 증가시키기 때문에
26번째 줄이 올 수 있는것이다!!
18번째 줄의 if는 전문자와 현문자가 다를 경우만을 다룬것이다.
그룹문자가 시작되는 이유 : 다른 문자로 바뀌는 과정으로부터 시작 이기 때문이다.
index의 역할은 각 알파벳의 자리에 등장한 횟수를 넣어주는 것이다.
만일 doododo일 경우
1. 첫번째 d의switch_group는 1이다 (나왔으니까) //15번째 줄
2. 두번째 o의switch_group는 14번째 줄에서 초기화됐다.
일단 첫번째 d와 값이 다르기때문에 18번째 if를 맞이하게 된다.
그 후 수상한녀석(!)이므로 index(o의 아스키코드 숫자-97)에 넣어준다.
넣고난 후 o의 switch_group는 0이므로 수상하지 않다 (그룹문자가 아니라는 의심을 안받음ㅎㅎ)
그러고 나서 이 친구는 확인된 알파벳 이라는 표식으로 21번째 줄, switch_group ++을 한다.
3. 세번째 o는 18번째 if에서 걸릴 것이 없으므로 다시 17번째 줄로가서 j++된다.
( 만일 doo였다면 j의 값 3 == str.length()의 값 3 이므로 검사에서 통과한 단어가 된다!
= 그룹문자 (count++) )
4. 네번째 d는 세번째 o와 값이 다르므로 18번째 줄 if를 맞이하게 된다.
역시 값이 달라지는 것은 수상하므로 index(d의 아스키코드-97)에 넣어준다.
switch_group의 값이 0이 아니므로 (이전에 d가 나왔던 적이 있으므로) 그룹문자가 아니다!
따라서 i++ , 다음 문자로 넘어가야한다.
'Programming > 코딩 문제 풀이' 카테고리의 다른 글
★코딩 문제 연습(8단계 / 백준 2292번 - 벌집) C++ (0) | 2021.01.28 |
---|---|
코딩 문제 연습(8단계 / 백준 1712번 - 손익분기점) C++ (0) | 2021.01.27 |
코드잼 기초 100제 - 1006번(형식지정자),1007,1008,1010 (0) | 2021.01.18 |
programmers 연습문제 : 가운데 글자 가져오기 / C++ 코드 (0) | 2020.07.03 |
programmers 연습문제 : 2016년 / C++ 코드 (0) | 2020.07.03 |