문제풀이 피드백_백준_8958_std::string 사용기

태승환·2022년 6월 9일
0

baekJoon_FeedBack

목록 보기
1/1

BaekJoon_FeedBack

백준 문제 풀다가 적어놓으면 좋을 것 같아서 적어본다.

8958번 문제

문제

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


OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다.

출력

각 테스트 케이스마다 점수를 출력한다.

예제 입력

5
OOXXOXXOOO
OOXXOOXXOO
OXOXOXOXOXOXOX
OOOOOOOOOO
OOOOXOOOOXOOOOX

예제 출력

10
9
7
55
30

나으 설계
1. 테스트케이스 크기 만큼 string 배열 만들고 케이스 넣기
2. 한 케이스 마다 점수 계산하여 새로운 배열에 넣기
3. 출력

string을 사용하려 했으나 왠걸 string이 안나옴
찾아보니

#include<string>

추가도 해야하고 쓸때는

std::string

으로 써야함. string 친구는 클래스임니다!
게다가 멋진 함수들도 있었슴니다!

#include<string>
std::string str = "Happy";
str.size() -> str 길이 리턴
str.at(N) -> N번째 char 리턴

요것들 이용해서 가볍게 문제 클리어~
내코드 일부분임니다

// Main_calculate
	for(c_i=0; c_i<testCaseNum; c_i++)
	{
		caseStringLength=arr[c_i].size();
		scoreStack=0;
		scoreSum=0;
		for(c_j=0; c_j<caseStringLength; c_j++)
		{
			if(arr[c_i].at(c_j)=='O')
			{
				scoreStack++;
				scoreSum += scoreStack;
			}
			else
			{
				scoreStack=0;
			}
		}
		scoreArr[c_i]=scoreSum;
	}

스택을 쌓고 바로 점수에 합산하여 계산하는 방식으로 했습니다. str.at(x) 함수 덕에 편리하게 풀었음니다.

오늘하루도 배웠다 넘나 뿌듯

profile
Chi_chi!

0개의 댓글