[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
반응형