list 초기화에 대해서 아직도 제대로 모르고 있어서 계속 해매었던 문제이다.

list에 대한 초기화만 제대로 안다면 구현을 하는 논리는 간단하다고 볼 수 있다.

일단 문제는 다음과 같다.

문제는 상황설명까지 있어서 어려워보이지만 간단하다.

첫 번째 입력은 반복횟수이다.

그리고 나서 반복횟수만큼 음이 아닌 정수를 입력한다. 이 때, 반복횟수 이후 처음으로 입력된 정수가 기준이 되어서, 이 값이 다른 입력된 숫자들 중에 가장 크면 S를 출력하고, 그렇지 않으면 N을 출력한다.


내가 문제되었던 부분은 바로 list의 초기화이다.

list 초기화에 대해서 이참에 정리를 하고 가고자 한다.

우선 list를 만드는 방법은 간단하다.

변수 = list() 라고 하거나, 변수 = [] 로 하면 된다.

여기서부터 중요하다. list의 초기화가 필요하다. 0으로 초기화를 하고자하면 3가지의 방법이 존재한다.

1번 방법: V = [0*i for i in range(N)]  #for문을 통해서 크기가 N인 리스트에 각각 0을 대입하는 것이다.

2번 방법: V = [0]*N  #딱 보기에도 직관적이고 간단한다. 0을 크기가 N만큼 만드는 것이다.

3번 방법: V = [0 for _ in range(N)]  #이 또한 1번 방법과 비슷한데 조금 더 간단하다고 볼 수 있다. 모든 N에 0을 대입한다는 의미를 가진다.

 

 


 이렇게 해서 다음과 같은 코드를 생성하면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
= int(input())
# V = [0*i for i in range(N)] # 더 좋은 list 초기화 방법 = [0]*N으로 한다.
# V = [0 for _ in range(N)]
= [0]*N
for i in range(N):
    V[i] = int(input())
    # print(V[i])
for j in range(N):
    if V[0!= max(int(V[0]), int(V[j])):
       res = 'N'
       break;
    else:
        res = 'S'
print(res)
 
cs

 

 

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

+ Recent posts