🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

인덱스 번호

21.03.18 03:07 작성 조회수 126

2

매 강의를 들으면서 많은 걸 배워갑니다 좋은 강의에 대한 감사를 전하며 질문 시작하겠습니다 !

리스트를 사용할 때 매번 인덱스가 등장하면서 헷갈리는데요

이번 문제에서는 인덱스를 0부터 시작하지 않고 1로 가정하고 시작하셨는데, 왜 그런지 이해가 되지 않습니다 ㅠㅠ

```

for i in range(2, n+1):

    if ch[i] ==0:

```

이 코드가 있을 때,  i가 2부터 시작하면 사실상 리스트의 3번째 부터 시작인데... 앞의 숫자 1,2는 왜 포함이 안되나요..?

답변 2

·

답변을 작성해보세요.

0

안녕하세요^^

인덱스 변수인 i가 우리가 소수인지를 확인하는 숫자라고 생각하시면 됩니다. 

0

haon님의 프로필

haon

2021.03.18

처음에 배열(리스트)크기가 어느정도였나요?

전체코드를 한번보여주세요!

```

n=int(input()) 
ch=[0]*(n+1)
cnt=0
for i in range(2, n+1):
if ch[i] == 0:
if ch[i]==0:
cnt+=1
for j in range(i, n+1, i):
ch[j]=1
print(cnt)

```

전체코드입니다 !

생각하기 쉽게 인덱스 0을 버리고 배열 길이를 하나 더 늘려준걸까요..?

그러면 공간 낭비는 아닌지 ㅠㅠ

아!!! 어차피 0과 1은 소수가 아니고,

i=2부터 시작해도 일반적으로 생각하는 숫자와 인덱스 번호와 일치하니까 ..!

이렇게 한 것 같은데 맞나요..!??

하지만 0은 고려할 부분이 아닌 것 같은데...여기에 대한 의문만 해결하면 완전히 이해될 것 같아요..!

haon님의 프로필

haon

2021.03.19

예를들어서 처음의 ch = [0]*(n+1)를 ch = [0]*(n)로 바꿔도 인덱스에러가 나니까 어쩔 수 없을것같아요.

채널톡 아이콘