https://www.acmicpc.net/problem/6219
문제의 출처는 위에 있다.
이 문제로 python에서 우리가 원하는 비어있는 배열과 range에 대해서 조금 알아볼 수 있다.
range()의 괄호안에는 다들 알다시피 최대 3개의 파라미터를 사용할 수 있다.
([시작 인덱스],[마지막 인덱스], [증가/감소 값]) 이정도는 누구나 알 수 있다. 해답 코드를 보면 이해할 것이다.
그리고 소수를 구하기 위한 초기화된 배열이 필요할테인데 파이썬의 경우,
[0] * [크기] 와 같이 나타낼 수 있다. 후의 2차원 배열 역시 '[[0]*10]*10' 와 같이 초기화 할 수 있다.
코드를 돌려보면 바로 이해할 수 있다.
1
2
3
4
5
6
7
8
9
|
arr = [0] * 10
print(arr)
arr2 = [[0]*10]*10
for i in range(10):
for j in range(10):
print(arr2[i][j],end=" ")
print()
arr3 = [i for i in range(10)]
print(arr3)
|
그래서 이 문제는 에라토스테네스의 체를 구현하도 문제에서 요구하는 답을 구하면 된다.
2020/05/18
파이썬에서 2차원 리스트를 초기화할 때 주의할게 있다.
아래 코드를 보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
a = [[0] * 3] * 5
b = [[0] * 3 for i in range(5)]
c = [[0 for _ in range(3)] for _ in range(5)]
a[1][1],b[1][1],c[1][1] =1,1,1
for i in range(5):
for j in range(3):
print(a[i][j],end=" ")
print()
print()
for i in range(5):
for j in range(3):
print(b[i][j],end=" ")
print()
print()
for i in range(5):
for j in range(3):
print(c[i][j],end=" ")
print()
|
cs |
이 코드를 실행해보면 뭔가 차이가 있다.
for문으로 초기화하지 않은 변수에서 [0]*상수는 모두 같은 객체로 인식된다, 그렇기 떄문에 값을 수정해야하는 변수의 경우, for문을 사용한 초기화에 익숙해져야 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
import sys
def f(num,num2):
num ,chk= str(num),0
for i in num:
if num2 == int(i): chk=1
if chk == 1: return 1
else: return 0
a = [False,False] + [True] * 4000001
ans=0
for i in range(2,4000001):
if a[i] == True:
for j in range(i+i,4000001,i):
a[j] = False
for i in range(A,B,1):
if a[i] == True: ans = ans + f(i,D)
print(ans)
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
Refernce
https://leedakyeong.tistory.com/entry/Python-2-dimension-list
'python' 카테고리의 다른 글
[python] XML 파일 만들기 (0) | 2020.05.08 |
---|---|
[python] 엑셀 데이터 추출 및 메모장 데이터 가져오기 (0) | 2020.04.30 |
[python] 백준 4659 비밀번호 발음하기 (0) | 2020.04.27 |
[python] 리스트 정렬, 람다식, list 응용 (0) | 2020.03.29 |
[Python]리스트 기본, split, 슬라이싱, 부분집합(Powerset) 구하기 (0) | 2019.09.10 |