Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total



GitHub Contribution
Loading data ...
관리 메뉴

초보 개발자의 일기

8958번 - O,X 퀴즈 본문

열공일기/코딩연습

8958번 - O,X 퀴즈

Da다 2021. 5. 11. 22:38
 

8958번: OX퀴즈

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

www.acmicpc.net

문제

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

"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.

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

입력

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

출력

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

나의 제출 - Python

이번 문제는 코린이인 나에게 정말 어려웠다. 처음 리스트를 생성해서 중복 인덱스가 되는 것까지 확인한 후에  시작했는데도 리스트 타입을 미처 확인하지 못해 끝없는 수정을 반복했다. input이 내가 뜻한대로 돌아가지 않아 입력한 O와 X가 문자열이 아닌 각각의 문자로 입력되어 난항을 겪었다. 리스트 생성과 인덱싱에 관해 좀 더 알아봐야 겠다.

N = int(input())
P = []
A = []
j = 0
for i in range(0,N): # 입력받을 줄의 개수
    T = input()
    A.append(T) # 리스트로 변환한 입력 = [ox결과1, ox결과2, ox결과3, ...]
print('리스트A의 타입 :' ,type(A), '리스트A',A)

print('len(A)', len(A), '= 입력받은 줄 수!')
print(range(0,len(A))) # 0~입력받은 줄 수 ex) [0, 1, 2, 3, ...]
for k in range(0,len(A)): # 2줄입력받으면 2번도는 for문
    for a in range(0,len(A[k])): # A의 첫 번째 요소 = 'OO'
        print(A[k][a]) # A의 첫 번째 요소(문자열)의 첫 번째 문자!
        if A[k][a] == 'O':
            j += 1
            P.append(j)    
            print('리스트 P = ',P)
        else :
            j = 0
            P.append(j)
            print('리스트 P = ',P)
    print(sum(P))
    j = 0
    P = []

위 코드는 제출 전 확인에 확인을 하느라 주석이 많고, 제출에 필요치 않은 부분도 많이 포함되어있다. 참고, 보관용으로 올려둔다. 아래는 제출 코드이다.

N = int(input())
P = []
A = []
j = 0
for i in range(0,N):
    T = input()
    A.append(T)
for k in range(0,len(A)):
    for a in range(0,len(A[k])):
        if A[k][a] == 'O':
            j += 1
            P.append(j)    
        else :
            j = 0
            P.append(j)
    print(sum(P))
    j = 0
    P = []

'열공일기 > 코딩연습' 카테고리의 다른 글

1065번 - 한수  (0) 2021.05.16
4673번 - 셀프 넘버  (0) 2021.05.14
3052번 - 나머지  (0) 2021.05.09
1110번 - 더하기 사이클  (0) 2021.05.08
10871번 - X보다 작은 수  (0) 2021.05.07
Comments