string 헤더 사용해보기(8958)

CPP에서는 char 포인터로 문자열을 받는 것 이외에 string 헤더를 통하여
문자열을 배열 형태로 저장할 수 있다

#include <iostream>
#include <string>

//int* arr;
//int arrLen;
//cin >> arrLen;
//arr = new int[arrLen];

using namespace std;

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


	for (int i = 0; i < caseNum; i++) {
		string str;
		cin >> str;
		for (int i=0;i<str.length();i++)
			cout << "str[" << i << "] = " << str[i] << endl;
	}
}

결과:
3
first
str[0] = f
str[1] = i
str[2] = r
str[3] = s
str[4] = t
second
str[0] = s
str[1] = e
str[2] = c
str[3] = o
str[4] = n
str[5] = d
third
str[0] = t
str[1] = h
str[2] = i
str[3] = r
str[4] = d

이를 기반으로 백준 배열문제 8958을 풀이해보면

#include <iostream>
#include <string>

using namespace std;

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


	for (int i = 0; i < caseNum; i++) {
		string str;
		cin >> str;
		int totalScore = 0;
		int score = 0;
		for (int i = 0; i < str.length(); i++) {
			if (str[i] == 'O')
				score++;
			else if(str[i] == 'X')
				score = 0;
			totalScore += score;

		}
		cout << totalScore << endl;
	}
}

string이 가지는 메서드 .length()로 길이를 구하여
각 문자에 배열형태로 접근할 수 있다.

		int totalScore = 0;
		int score = 0;
	총점변수와, 각 인덱스별 점수에 대한 변수를 주고
    
        
		if (str[i] == 'O')
			score++;
		else if(str[i] == 'X')
			score = 0;
		totalScore += score;
	O일 때 점수 기준을 +1 하고, X일때 벌어놓은 점수 기준을 초기화 시켜준 다음
    한 인덱스마다 총점에 점수를 더해주는 방식으로 작성한다.
    

파이썬의 경우 입력 문자열을 list()로 묶어주면 자동으로 문자마다 리스트의 값으로 하나하나 할당해준다

import sys

a = int(input())
for i in range(a):
   case = list(input())
   total_score = 0
   score = 0
   for j in range(0, len(case)):
       if case[j] == 'O':
           score += 1
       elif case[j] == 'X':
           score = 0
       total_score += score
   print(total_score)

좋은 웹페이지 즐겨찾기