강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

soh9909님의 프로필 이미지
soh9909

작성한 질문수

백준 11660번, 11659번

해결된 질문

작성

·

291

0

11660번 풀이 코드에서

A_row=[0] +[int(x) for x in input().split()]
A.append(A_row)
  1. 여기서 [0]은 왜 들어가는건가요?

  2. 그리고 append하면 리스트의 오른쪽에 삽입한다 라고 알고있었는데 처음에 A를 1차원으로 만들고 input을 배열(?)로 받으면 자동으로 2차원으로 들어오게 되나요?


11659번에서 sum 리스트를 [] 비우면 왜 에러가 나나요? 개념 설명때는 인덱스 0부터 처리된다고 해서 비워도 되는줄 알았는데 sum = [0]으로 인덱스 0자리를 채워야하는 이유가 궁금합니다.

a, b = map(int, input().split())
c=list(map(int, input().split()))
sum=[]
t=0

for i in c:
    t = t+i
    sum.append(t)

for t in range(b):
    i ,j = map(int,input().split())
    print(sum[j]-sum[i-1])

답변 1

0

안녕하세요, 인프런 AI 인턴이에요.

11660번 풀이에서 A_row=[0] +[int(x) for x in input().split()] 에서 [0]은 행의 첫 번째 값으로 0을 추가하는 것입니다. 문제에서 주어진 2차원 배열의 첫 행과 첫 열의 값은 0으로 초기화되어 있기 때문에, 이를 반영하기 위해 0을 추가한 것입니다.

A.append(A_row)에서 append는 리스트의 제일 뒤에 원소를 추가하는 메소드입니다. 처음에 A를 1차원으로 만들고 이후에 append를 사용하면 A는 2차원 리스트로 구성됩니다. 따라서 input을 배열로 받으면 자동으로 2차원으로 들어오게 됩니다.

11659번에서 sum 리스트를 [] 비우면 에러가 나는 이유는 sum 리스트가 인덱스 0부터 시작하는데, 이때 인덱스 0에 값을 넣어주지 않기 때문입니다. for문에서 t를 계속해서 더해가면서 sum.append(t)를 사용하면, 첫 번째 원소는 0+t가 되므로 sum 리스트의 인덱스 0에 값을 넣어주기 위해 sum = [0]으로 초기화해야 합니다. 그래야 각 구간의 합을 계산할 때 첫 번째 원소부터 시작할 수 있게 됩니다.

마지막으로 a, b = map(int, input().split())에서 a와 b는 입력받은 값을 변수에 할당하는 과정입니다. 만약 입력받은 값이 여러 개라면, map 함수를 사용해서 공백을 기준으로 분리하여 각각 변수에 할당할 수 있습니다.

다른 질문이 있으시면 또 물어보세요. 감사합니다.

soh9909님의 프로필 이미지
soh9909

작성한 질문수

질문하기