[python_파이썬_Pass]백준_8958번_OX퀴즈_구현_풀이
2024. 9. 11. 11:52ㆍ코드리뷰
728x90
반응형
공부하는허딩크 : https://www.youtube.com/live/AgMXuQAl4JE?feature=shared
※회사 점심시간 활용
<첫번째 시도 : 틀렸습니다.>
'X'를 인자로 split을 돌면 'O'인 요소들만 구분되어 'O', "OO" 이렇게 구분되는 것으로 생각했다.
마지막 for를 왜 저렇게 구현 했을까 ;; 지금 보면 이해가 안되는 코드네...
import sys
input = sys.stdin.readline
N = int(input())
answer = 0
for _ in range(N):
quizes = list(map(str, input().split("X")))
for quize in quizes:
if 'O' in quize:
for i in range(1, quize.count('O') + 1):
answer += i
print(answer)
<두번째 시도 : 맞았습니다.>
아니네.. 첫번째 코드도 잘 구현 했네. O가 한개면 1점, 2개면 1 + 2점, 3개면 1+2+3점 이니까....
단, 첫번째에서는 answer변수가 전역변수로 모든 합계의 누적이라면
이번에는 for문 안에 지역변수라서 예제 한줄이 끝날때마가 answer는 초기화가 되면서 올바른 정답이 된다.
import sys
input = sys.stdin.readline
N = int(input())
for _ in range(N):
answer = 0
quizes = list(map(str, input().split("X")))
for quize in quizes:
if 'O' in quize:
for i in range(1, quize.count('O') + 1):
answer += i
print(answer)
<세번째 시도 : 맞았습니다._다른 사람 풀이 참고>
비슷하지만 내가 작성한 코드보다 for가 한번 줄어든다.
cnt변수를 두고 X가 나올때 cnt를 0으로 초기화 해서 반복하게 할 수 있다.
import sys
input = sys.stdin.readline
N = int(input())
for _ in range(N):
quizes = input()
score = 0
cnt = 0
for quize in quizes:
if quize == 'O':
cnt += 1
score += cnt
else:
cnt = 0
print(score)
728x90
반응형
'코드리뷰' 카테고리의 다른 글
[python_파이썬_Pass]백준_1920번_수찾기_이분탐색_풀이 (0) | 2024.09.11 |
---|---|
[python_파이썬_Pass]백준_4153번_직각삼각형_수학_풀이 (0) | 2024.09.11 |
[python_파이썬_Pass]백준_2920번_음계_구현_풀이 (0) | 2024.09.11 |
[python_파이썬_Pass]백준_2577번_숫자의개수_구현_풀이 (0) | 2024.09.11 |
[python_파이썬_Pass]백준_14889번_스타트와 링크_백트레킹_풀이 (1) | 2024.09.08 |