안경잡이 구루루

백준 8958 ( OX 퀴즈 ) [ Python ] 본문

파이썬(Python)/문제풀이(백준,BaekJoon)

백준 8958 ( OX 퀴즈 ) [ Python ]

구루루(gururu) 2020. 6. 25. 14:13
반응형


나:

N = int(input())

for i in range(N):
    OX= input()
    OX= OX.upper()
    score =0
    plus =1
    for k in range(len(OX)):
        if OX[k] == 'X':
            plus =1
            score +=0
        elif OX[k] == 'O':
            score += plus
            plus +=1
    print(score)

완성된 코드는 위와 같다.

 

N = int(input())

for i in range(N):
    OX= input()
    OX= OX.upper()
    score =0
    plus =1

우선 OX 문자열을 몇개 만들지 N을 통해 입력값을 받는다.

for 반복문을 만들고 이때 N개수만큼 반복하며 OX 문자열을 받는다. 입력 예시를 보니 모두 대문자이기 때문에 upper 사용해서 받은 입력값들 모두 대문자로 바꾼다. 

score는 최종 점수가 들어갈 변수라서 0점 대입, plus는 연속된 O에 따라 값이 바뀌지만 O의 기본점수는 1이기에 1대입

 

    for k in range(len(OX)):
        if OX[k] == 'X':
            plus =1
            score +=0
        elif OX[k] == 'O':
            score += plus
            plus +=1
    print(score)

반복문속 for 반복문으로 OX 문자열을 입력 받을때 마다 각각의 점수를 계산하기위한 과정이다.

입력값으로 받은 OX의 길이만큼 판단을 하기 위해 len( OX ) 사용

'X' 일때는 다음 O에는 연속점수가 들어가지 않기 때문에 plus에 1 대입, 'X'일때 받는 점수는 없다

'O' 일때는 연속된거에 따라 받는 점수 plus를 더하고 다음에 'O'가 들어오면 연속점수를 받기위해 미리 plus +=1 한다.

미리 'O'가 나온다고 예상하고 plus +=1 해도 다음에 'X'가 나오면 위에서 1로 초기화 시키기 때문에 상관없다.

이후 각각의 문자열마다 최종점수 score를 출력하기 위해 반복문 내부에 print로 출력

반응형