smooth waters run deep

1d-1c/BOJ

8958_OX퀴즈 (C++)

yeon_11 2020. 8. 17. 23:00
 

8958번: OX퀴즈

"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수

www.acmicpc.net

#include <iostream>
#include <vector>
using namespace std;

int main() {
	int n;
	cin >> n;

	vector<string> v;
	string str;

	for (int i = 0; i < n; i++) {
		cin >> str;
		v.push_back(str);
	}

	for (int i = 0; i < n; i++) {
		int cnt = 0, ans = 0;

		for (int j = 0; j < v[i].size(); j++) {
			if (v[i].at(j) == 'X')
				cnt = 0;
			else {
				cnt++;
				ans += cnt;
			}
		}
		cout << ans << '\n';
	}

	return 0;
}

 

저엉말 오랜만에 푼 문제! 하반기 시작하려는 낌새가 느껴져서 급하게 단계별 문제풀기 들어갔다. (나는 코딩찌질이니까ㅠㅠ)

'문자열' 관련된 단어만 나와도 모르겠고 자신이 없어지는 신기한 마법..

 

[ 문제 풀이 생각 과정 ]

1. 길이 생각하지 않고 문자열을 입력받는다기에 무작정 벡터를 썼다. 다시보니까 안써도 되는데 왜 썼는지 모르겠다.

2. 처음에는 자리를 기준으로 생각했다.

    i-1번째가 X,O인 경우로 나눠서 i번째가 X,O인 경우로 생각했는데 - 복잡하기만! 그래서 다시 생각했다.

3. 정말 단순하게!

   X일때는 cnt=0 으로, O일때는 cnt++해주고 ans+=cnt 해주면 된다고 갑자기 떠올랐다 헤헤

 

 

** 벡터 맘대로 쓰지 않기!!

** 이제 매일매일 문제 하나씩은 풀자!!

'1d-1c > BOJ' 카테고리의 다른 글

2908_상수 (C++)  (0) 2020.08.26
1157_단어 공부 (C++)  (0) 2020.08.25
10809_알파벳 찾기 (C++)  (0) 2020.08.25
4673_셀프 넘버 (C++)  (0) 2020.08.24
[백준] 1051_숫자정사각형 (Silver3) (C++)  (0) 2020.04.26