티스토리 뷰

Algorithm/BOJ

백준 8958번 C++

poopooreum 2023. 8. 23. 12:34
반응형
백준 8958번 OX퀴즈

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

8958번: OX퀴즈

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

www.acmicpc.net



정답 코드

#include<iostream>
#include<cstring>
using namespace std;
int ret(char *a) {
	int result = 0, index, max1,dif;
	int x = 0;
	 while(x <strlen(a)) {
		 if (a[x] == 'O') {
			 index = x;
			 dif = x;
			 while (index < strlen(a)) {
				 index++;
				 if (index == strlen(a)) {
					 max1 = index;
					 break;
				 }
				 else if (a[index] == 'X') {
					 max1 = index;
					 break;
				 }
			 }
			 for (int k = 1; k<=max1 - dif; k++)
				 result += k;
			 x = index;
		 }
		 else
			 x++;
	}

	return result;

}
int main() {
	int num;
	cin >> num;
	for (int x = 0; x < num; x++) {
		char input[81];
		cin >> input;
		int a = ret(input);
		cout << a << endl;
	}
}

문제 풀이

문자열을 입력받고 ret함수로 넘겨줍니다.
ret함수에서는 문자열의 길이만큼 while문을 돌려주고 그 안에서 O와 X를 찾습니다. O를 찾게 되면 그 지점부터 while문을 돌려서 X가 나오거나 문자열의 길이를 벗어나게 될 때까지 index값을 ++해주고 max1에 저장해줍니다. 이 while문을 탈출하면 for문을 돌려서 result에 k를 더해줍니다. 이 과정을 계속 반복하여
문제를 해결하였습니다.

반응형

'Algorithm > BOJ' 카테고리의 다른 글

백준 9020번 C++  (0) 2023.08.23
백준 9012번 C++  (0) 2023.08.23
백준 8437번 파이썬  (0) 2023.08.23
백준 8393번 C++  (0) 2023.08.23
백준 8370번 C++  (0) 2023.08.23
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함