알고리즘/C++ 풀이 기록

백준 - 1316 그룹 단어 체커

swanim 2021. 9. 9. 16:27

https://www.acmicpc.net/problem/1316

 

1316번: 그룹 단어 체커

그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때

www.acmicpc.net

1. 풀이 코드(C++)

#include <iostream>
using namespace std;

int main(void) {
	int n,cnt = 0;
	string word;
	bool flag;

	cin >> n;

	for (int i = 0; i < n; i++) { //new word
		cin >> word;
		flag = true;

		for (int j = 0; j < word.length(); j++) {
			for (int k = 0; k < j; k++) {
				if (word[j] != word[j - 1] && word[j] == word[k]) {
					flag = false;
					break;
				}
			}
		}
		if (flag) {
			cnt++;
		}
	}

	cout << cnt;
	return 0;
}

 

2. 문제를 풀면서 배운점

 

(1) flag 사용해서 풀기

 - if (flag)의 의미는 flag == true이다. 그렇다면 당연히 if(!flag)는 flag == false이겠지. 

 

(2) 포인터 쓰지 않고도 string만으로도 가능

    - 처음에는 포인터를 이용해서 풀려고 했다. 복잡하지 않고 간단하게 풀리는 문제였다. 

 

(3) a의 경우 어려우면 -> !a 떠올리기

 

(4) C++에서는 string 자료형을 쓸 수 있다. C에서는 불가능. C에서는 char만. 

 

 

'알고리즘 > C++ 풀이 기록' 카테고리의 다른 글

백준 - 1181 단어 정렬  (0) 2021.09.11
백준 - 1026 보물  (0) 2021.09.10
백준 - 22993 서든어택 3  (0) 2021.09.07
백준 - 1158 요세푸스 문제  (0) 2021.09.06
백준 - 1789 수들의 합  (0) 2021.09.06