BOJ | 8958번

송치헌·2021년 6월 22일
0
post-thumbnail

Python 풀이

import sys

N = int(input()) #테스트 케이스 입력
for i in range(N):
    ox = sys.stdin.readline() #OX 답안 입력
    cnt = 0 #'O' 개수 카운트
    sum = 0 # 점수합
    for c in ox:
        if c == 'O': #답이 'O'일 경우
            cnt += 1 #'O'의 개수 1개 증가
            sum += cnt #연속된 'O'의 개수만큼 점수도 오르므로 cnt만큼 더해준다.
        else:
            cnt = 0 #'X'가 나왔을 경우 'O'의 개수 0으로 초기화
    print(sum) #답 출력

'O'의 연속된 개수만큼 점수가 올라가므로 string형 변수 ox에 퀴즈 결과를 입력한다.
그 후 ox를 처음부터 끝까지 돌면서 정답인 것의 개수를 세는 동시에 점수도 올려준다.

  • 연속된 'O'가 1개일 때 : 1점
  • 연속된 'O'가 2개일 때 : 1점 + 2점
  • 연속된 'O'가 3개일 때 : 1점 + 2점 + 3점
    ...

'O'의 개수를 1부터 세면서 연속된 'O'가 있으면 연속된 'O'의 개수만큼 점수도 올라가므로 sumcnt만큼 더해주면 된다.

C++ 풀이

#include <string>
#include <iostream>

using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int N;
    cin >> N;
    while (N--) {
    	string OX;
    	cin >> OX;
    	int sum = 0;
    	int cur = 0;
    	for (char a : OX) {
    		if (a == 'O') {
    			cur++;
    			sum += cur;
    		}
    		else {
    		cur = 0;
    		}
    	}
    	cout << sum << '\n';
    }
}
profile
https://oraange.tistory.com/ 여기에도 많이 놀러와 주세요

0개의 댓글