원래는 블로그에 올리려던 문제가 아니었다.

처음에 풀었을 때, 너무 쉽게 수월하게 풀었기 때문이다.

사실 그래서 어떻게 풀었는지조차 기억이 안나는 문제...

 

문제는 두 번째 풀려고 오늘 건드렸을때, 전혀 풀리지 않았다는 것이다.

브론즈II라는 등급에 사로잡혀 어려울 것이라고 생각했기 때문일까?

잘 모르겠지만, 굉장히 막혀버렸고, 매우 부끄럽지만 거의 2시간 이상동안 해결하지 못했던 것 같다 (처음 풀었을 때는 5~10분 걸렸던 문제였는데도 말이다...)

 

그래서 아무래도 정리할 필요성을 느끼고 다시 올리기로 하였다.

 

참고로 2시간 이상동안 못 풀었던 이유는 2번째 for문에서부터 잘못 풀었기 때문이다.

len(Num)으로 받아서 O, X를 처리하기만 하면 되는데 이 부분에서 너무 꼬아서 생각했던 것 같다.

cnt를 1씩 늘리고, cnt를 다시 score에 넣으면 되는 간단한 구조를, 

전체 배열에 ox를 일일이 집어넣고, 

해당 for문에 다시 for문을 넣어서 뒤에 있는 ox를 기준으로 둬서, 그 앞의 배열의 값을 구하려고 하니...

이런 형태로 하면 파이썬의 경우 for문을 reversed()를 통해서 sliced를 통해서 뭔가를 하려고 했다....

아무튼 엉망이고, 

결론은 그냥 간단히 생각해서 풀면 되는 것이다... 

 

최근 들어 이상하게 간단하게 해결하면 되는 문제들이 안 풀리는 느낌이 있는데...

일단 오늘을 기점으로 다시 차분하고 간단하게 생각을 해봐야 할 것 같다.


참고로 위의 코드는 다음과 같이 짜면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
= int(input())
for i in range(n):
    Num = input()
    score = 0
    cnt = 0
    for j in range(len(Num)):
        if Num[j] == 'O':
            cnt += 1
            score += cnt
        elif Num[j] == 'X':
            score += 0
            cnt = 0
    print(score)
 
cs

 

 

문제 출처: https://www.acmicpc.net/problem/8958

 

8958번: OX퀴즈

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

www.acmicpc.net

+ Recent posts