티스토리 뷰

 

[Python] 백준 알고리즘 온라인 저지 8958번 : OX퀴즈

 

Python3 코드

n = int(input())

for _ in range(n):
    ox_list = list(input())
    score = 0  
    sum_score = 0  # 새로운 ox리스트를 입력 받으면 점수 합계를 리셋한다.
    for ox in ox_list:
        if ox == 'O':
            score += 1  # 'O'가 연속되면 점수가 1점씩 커진다.
            sum_score += score  # sum_score = sum_score + score
        else:
            score = 0
    print(sum_score)

 

 

Python3 코드 풀이

 

1. 코드 풀이에 대한 전체적인 설명

이번 문제는 OX리스트를 입력받으면 O에 부여되는 점수의 합을 구해서 출력하는 문제이다. X는 0점이다.  O의 점수는 1점부터 시작해서 O가 연달아 나오는 경우 점수가 1점씩 커진다. "OXXOOO"의 점수는 1+0+0+1+2+3 = 7점이 된다.

 

문제를 풀 때 두 개의 for문과 if 조건식을 이용해서 입력받은 문자열에서 O가 연속적이면 점수를 1부터 시작해서 1씩 커지게 하였고 X가 나오면 점수는 0점으로 리셋하는 방식으로 코드를 작성하였다.

 

2. 코드 상단부 - OX리스트를 입력받고 두 개의 변수를 0으로 지정한다.

for _ in range(n):
    ox_list = list(input())
    score = 0  
    sum_score = 0  # 새로운 ox리스트를 입력 받으면 점수 합계를 리셋한다.

처음에 테스트케이스의 숫자를 입력받아 변수 n에 선언하고서 for문을 n번만큼 반복한다. 이후에 반복문 안에서 o, x로 이루어진 문자열을 입력받으면 리스트로 변환하여 ox_list라는 변수에 저장하였다. 

 

점수를 더하는데 사용될 score와 sum_score 변수는 0으로 선언하였다. 이 두 개의 변수는 새로운 ox_list를 입력받으면 0으로 리셋된다.

 

3. 하위 for문을 작성해서 점수를 계산한다. 

    for ox in ox_list:
        if ox == 'O':
            score += 1  # 'O'가 연속되면 점수가 1점씩 커진다.
            sum_score += score  # sum_score = sum_score + score
        else:
            score = 0

for문으로 O나 X 문자를 하나씩 꺼내서 ox라는 변수에 선언하고 if조건식을 이용해서 O가 연달아 나오는 경우 점수가 1씩 증가하도록 하였다.

 

ox 변수가 O인경우 score 점수 변수에 1을 더하고 이 수를 sum_score 변수에 더한다. 처음 O가 나오면 score는 1이 되고 O가 연달아 나올 때마다 score는 1, 2, 3,.... 이런 식으로 1씩 증가하게 된다. ox변수가 O가 아니면 else구문으로 내려가서 score변수는 다시 0이 된다. 

 

반응형
댓글
반응형