Hyunseok
현재 사이트는 2024년 11월 이후로 업데이트 되지 않습니다. 새 글은 블로그로 확인해주세요. 블로그로 이동
프로그래밍/파이썬 [파이썬] 2563 색종이 feat. 재밌다
2023. 2. 12. 15:37

현재 사이트는 2024년 11월 이후로 업데이트 되지 않습니다. 새 글은 블로그로 확인해주세요. 블로그로 이동

세월은 지나 어느덧 10년은 가뿐히 더 넘은 이야기, 

 

중학교 2학년, 당시 그리 희귀하다던 컴퓨터부에서

컴터고문쌤이 매 점심시간마다 올림피아드에 나온 컴터 올림피아드 문제들을 하나씩 풀어주셨다

그 당시 아무런 생각도 없이 그냥 냅다 VB로 풀던 기억이 있는데 

 

당연히도 지금은 다 까먹었다가 백준을 밀다가 하나 딱 발견했다 

 

 

진짜 토씨 하나 안 바뀌고 그대로 나와있을줄은 .. 

 

지금 보면 이걸 왜 혼자 못풀까라는 생각을 하겠지만

중학교의 나는 그것을 생각하지 못하지 않을까라 생각한다 

 

풀이는 매우간단하다

 

먼저 주어질 도형의 x, y값의 비를 구한다

근데 이번 문제는 10x10으로 고정되어 있기에 비는 1:1, 길이는 10이다

 

그리고 각 좌표값의 +10에 해당하는 x, y의 최댓값을 구하여 1사분면의 최대값을 구한다

이거 또한 100x100으로 고정해 주었기에 100x100가 1사분면의 최댓값 되시겠다

 

이제 값을 구하면 된다 

 

100x100 크기의 ary를 0으로 초기화하고 

 

들어오는 두 개의 좌표값 to 좌표값+10, 까지의 2중 for문을 돌린다

각각의 for문의 index값이  width, height라 가정했을 때

2중 for문안에서 ary[width][height] = 1로 해당하는 좌표에 1을 넣어준다

 

그렇게 for문이 다 돌면 위의 그림과 같이 1사분면이 칠해져 있을 것이다 

 

이후는 간단하다 

 

for문으로 100줄을 돌려서 

0줄부터 100줄까지의 총합을 최종변수에 계속 더해서 출력해 주면 끝이다 

 

ary = [[0]*100 for _ in range(100)]
for total in range(int(input())):
    x, y = map(int, input().split())
    for width in range(x, x+10):
        for height in range(y, y+10):
            ary[width][height] = 1
result = 0
for i in range(100):
    result += sum(ary[i])
print(result)

오랜만에 보는 문제인데 참 신기했고 재밌었다

 

이게 추억을 되살리는 맛인가 보다

 


프로그래밍/파이썬의 다른 글