간단한 문제임에도 불구하고 계속 오류가 나서 이렇게 정리를 해본다.

문제는 다음과 같다.


우선 햇갈렸던 부분은 2가지였다.

1. 어떻게 입력값을 받는가 ===> 해결: 그동안 문제를 풀 때 항상 map(~)의 형태로 받다보니 list로 간단히 받을 수 있는 방법을 까먹었었다...

2. 계속 str[i] == '2'라는 line에서 오류가 났다. 오류 형태는 index out of range. 즉, 지정해준 배열의 크기보다 계속 크게 무언가를 처리하려고 한다는 뜻이다. ---> 해결: for문에서 range(str_len)을 실수로 range(str_len+1)로 처리를 했다. 그러다보니 str[i]는 계속 정해준 str_len보다 하나 큰 값까지 접근을 하려고 해서 결국 out of range가 발생하는 것이었다.

 

이 두 부분이 해결되니, 코드가 아주 잘 돌아갔다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
str_len = int(input())
str = list(input())
# print(str[1])
cnt_2 = 0
cnt_e = 0
for i in range(str_len):
    if str[i] == '2':  # 여기서 계속 문제가 발생한다... list index out of range계속 발생 --> 이유.. for문의 range에서 str_len+1로 처리를 했었다...
        cnt_2 = cnt_2 + 1
    elif str[i] == 'e':
        cnt_e = cnt_e + 1
if cnt_2 > cnt_e:
    print(2)
elif cnt_2 < cnt_e:
    print('e')
else:
    print("yee")
 
cs

 

 

출처: https://www.acmicpc.net/problem/17094

 

17094번: Serious Problem

2의 등장횟수가 더 많다면 2를 출력하고, e의 등장횟수가 더 많다면 e를 출력한다. 등장횟수가 같다면 "yee"를 출력한다. (큰 따옴표 제외)

www.acmicpc.net

 

+ Recent posts