Miner

[Baekjoon] 2563번 오류(?) 본문

Python

[Baekjoon] 2563번 오류(?)

MineTime76 2023. 1. 19. 17:48

>> 두 코드의 차이 <<

color = [[0] * 3 for _ in range(4)]

color2 = [[0] * 3] * 4

print(color)
print(color2)

왜 차이가 날 까? 뭐가 다른 걸까

(?) 납득할 수 없는 이유

>> 원래 코드

import sys

n = int(sys.stdin.readline())
arr = [
    tuple(map(int, sys.stdin.readline().split()))
    for i in range(n)
]

#print(arr)

color = [[0] * 100] * 100
#print(color)

# (3,7) 들어가면 3-13 7-17 
def colored(a,b):
    for i in range(a,a+10):
        for j in range(b,b+10):
            color[i][j] = 1


for i in arr:
    colored(i[0],i[1])

cnt = 0
for i in range(100):
    for j in range(100):
        if color[i][j] == 1:
            cnt += 1
#print(color)
print(cnt)

>>  고친 코드

import sys

n = int(sys.stdin.readline())
arr = [
    tuple(map(int, sys.stdin.readline().split()))
    for i in range(n)
]

#print(arr)

color = [[0] * 100 for _ in range(100)]
#print(color)

# (3,7) 들어가면 3-13 7-17 
def colored(a,b):
    for i in range(a,a+10):
        for j in range(b,b+10):
            color[i][j] = 1


for i in arr:
    colored(i[0],i[1])

cnt = 0
for i in range(100):
    for j in range(100):
        if color[i][j] == 1:
            cnt += 1
#print(color)
print(cnt)

(고치기 전)

1

0 0

넣었을 때 990

(고친 후)

1

0 0

넣었을 때 100

 

https://www.acmicpc.net/problem/2563

 

2563번: 색종이

첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변

www.acmicpc.net

 

'Python' 카테고리의 다른 글

[Baekjoon] 10951  (0) 2023.01.30
[Baekjoon 1652] 런타임 에러 (네임에러) 문제  (0) 2023.01.26
리스트 내장함수  (0) 2023.01.24
[Baekjoon] 1051번  (0) 2023.01.19
[Baekjoon] 1929 번  (1) 2023.01.19