생각하는 시간이 점차 길어지기 시작하는 것 같다.
처음에 생각을 했을 땐, 문자열을 받고난 후, 문자열 합축으로 2O1X3O이런식으로 바꿔서 O앞부분의 숫자만 따로 떼어 낸 후 계산하려 했었다.
그렇게 코드를 짜면서 내려가는데, 이건 너무 비효율적인거같고, 코드가 많이 길어졌다.
그래서 나는 처음부터 다시 쪼개서 생각 해 보기로 했다.
#생각1. OX문제의 점수를 계산하는 문제이다.
#생각2. O는 1점 X는 0점을 기본으로 한다.
#생각3. 연속으로 O를 맞으면 점수가 개수만큼 1점씩 더 늘어난다.
#생각4. 문자열을 읽어들이면서 O는 1점을주고, 만약 다음에도 O면 추가점수를 변수로 또 만들어서 1점씩 늘린다
만약 X가 나온다면 추가점수를 0점으로 초기화를 시켜준다.
나는 이렇게 문제를 정리한 후 코드를 다시 작성 했다.
num = int(input())#시도 횟수 for i in range(0,num): pro = input()#문자열 입력 add = 0 # 추가점수 base = 1 # O의 기본점수 total = 0 # 현재 전체점수 for j in pro: if j == 'O': total = total + base + add add = add + 1 elif j == 'X': add = 0 print(total)
코드를 제출하니 정답으로 인정이 되었다.
문제를 풀기 전에, 하나씩 생각하는 과정을 글로 적는 습관을 가져야겠다.
문제 출처
https://www.acmicpc.net/problem/8958
'코딩테스트 > 백준 알고리즘 풀이' 카테고리의 다른 글
[백준 알고리즘/python] 백준 10809번 알파벳 찾기, 파이썬 (0) | 2020.03.18 |
---|---|
[백준 알고리즘/python] 백준 11720번 숫자의 합, 파이썬 (0) | 2020.03.18 |
[백준 알고리즘/python] 백준 1065번 한수, 파이썬 (0) | 2020.03.16 |
백준 | 4673번 셀프넘버, 파이썬 (0) | 2020.03.16 |
백준 | 4344번 평균은 넘겠지, 파이썬 (0) | 2020.03.16 |
댓글