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

 

문제

 

κ°€λ‘œ, μ„Έλ‘œμ˜ 크기가 각각 100인 μ •μ‚¬κ°ν˜• λͺ¨μ–‘μ˜ 흰색 도화지가 μžˆλ‹€. 이 도화지 μœ„μ— κ°€λ‘œ, μ„Έλ‘œμ˜ 크기가 각각 10인 μ •μ‚¬κ°ν˜• λͺ¨μ–‘μ˜ 검은색 색쒅이λ₯Ό μƒ‰μ’…μ΄μ˜ λ³€κ³Ό λ„ν™”μ§€μ˜ 변이 ν‰ν–‰ν•˜λ„λ‘ 뢙인닀. μ΄λŸ¬ν•œ λ°©μ‹μœΌλ‘œ 색쒅이λ₯Ό ν•œ μž₯ λ˜λŠ” μ—¬λŸ¬ μž₯ 뢙인 ν›„ 색쒅이가 뢙은 검은 μ˜μ—­μ˜ 넓이λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

 

예λ₯Ό λ“€μ–΄ 흰색 도화지 μœ„μ— μ„Έ μž₯의 검은색 색쒅이λ₯Ό κ·Έλ¦Όκ³Ό 같은 λͺ¨μ–‘μœΌλ‘œ λΆ™μ˜€λ‹€λ©΄ 검은색 μ˜μ—­μ˜ λ„“μ΄λŠ” 260이 λœλ‹€.

 

μž…λ ₯

첫째 쀄에 μƒ‰μ’…μ΄μ˜ μˆ˜κ°€ 주어진닀. 이어 λ‘˜μ§Έ 쀄뢀터 ν•œ 쀄에 ν•˜λ‚˜μ”© 색쒅이λ₯Ό 뢙인 μœ„μΉ˜κ°€ 주어진닀. 색쒅이λ₯Ό 뢙인 μœ„μΉ˜λŠ” 두 개의 μžμ—°μˆ˜λ‘œ μ£Όμ–΄μ§€λŠ”λ° 첫 번째 μžμ—°μˆ˜λŠ” μƒ‰μ’…μ΄μ˜ μ™Όμͺ½ λ³€κ³Ό λ„ν™”μ§€μ˜ μ™Όμͺ½ λ³€ μ‚¬μ΄μ˜ 거리이고, 두 번째 μžμ—°μˆ˜λŠ” μƒ‰μ’…μ΄μ˜ μ•„λž˜μͺ½ λ³€κ³Ό λ„ν™”μ§€μ˜ μ•„λž˜μͺ½ λ³€ μ‚¬μ΄μ˜ 거리이닀. μƒ‰μ’…μ΄μ˜ μˆ˜λŠ” 100 μ΄ν•˜μ΄λ©°, 색쒅이가 도화지 λ°–μœΌλ‘œ λ‚˜κ°€λŠ” κ²½μš°λŠ” μ—†λ‹€.

 

좜λ ₯

첫째 쀄에 색쒅이가 뢙은 검은 μ˜μ—­μ˜ 넓이λ₯Ό 좜λ ₯ν•œλ‹€.

 

예제 μž…λ ₯1 예제 좜λ ₯1
3
3 7
15 7
5 2
260

 

 

μ†ŒμŠ€ μ½”λ“œ
# 도화지
paper = [[0 for col in range(100)] for row in range(100)]

n = int(input())

for _ in range(n):
    x,y = map(int, input().split())

    temp_x = x
    temp_y = y

    # μƒ‰μΉ ν•˜κΈ°
    while temp_x < x + 10:
        for idx in range(10):
            paper[temp_x][temp_y+idx] += 1
        temp_x += 1

# 도화지λ₯Ό λŒλ©΄μ„œ μƒ‰μΉ λ˜μ–΄ 있으면 cnt+1
cnt = 0
for row in paper:
    for col in row:
        if col > 0:
            cnt += 1

print(cnt)

 

풀이

  • 100 x 100 크기 도화지 2차원 리슀트둜 μ •μ˜
  • μƒ‰μ’…μ΄μ˜ 수λ₯Ό n에 μ €μž₯
  • μƒ‰μ’…μ΄μ˜ 수만큼 μƒ‰μΉ ν•˜λŠ” 과정을 반볡
    • μƒ‰μ’…μ΄μ˜ ν–‰ 번호λ₯Ό x, μ—΄ 번호λ₯Ό y에 μ €μž₯
    • ν–‰ λ²ˆν˜Έμ™€ μ—΄ 번호λ₯Ό μž„μ‹œλ‘œ temp_x, temp_y에 μ €μž₯
    • μƒ‰μ’…μ΄μ˜ 길이가 κ°€λ‘œμ„Έλ‘œ 10μ΄λ―€λ‘œ ν–‰μ—΄λ²ˆν˜Έμ˜ +10λ§ŒνΌμ„ 색칠
  • 도화지λ₯Ό λŒλ©΄μ„œ 값이 1보닀 큰 κ²½μš°μ— cnt+1

 

μ²˜μŒμ— 도화지λ₯Ό μ •μ˜ν•  λ•Œ [[0]*100]*100으둜 μ •μ˜ν–ˆμ—ˆλŠ”λ° μ›ν•˜λŠ” λŒ€λ‘œ λ‚˜μ˜€μ§€ μ•Šμ•„μ„œ μ°Ύμ•„λ³΄λ‹ˆ μ—°μ‚°μž *λ₯Ό μ΄μš©ν•˜μ—¬ 배열을 μ„ μ–Έν•˜λ©΄ λ‹¨μˆœν•˜κ²Œ μš”μ†Œλ§Œ λ³΅μ‚¬ν•˜λŠ” 얕은 볡사(shallow copy)κ°€ μΌμ–΄λ‚œλ‹€κ³  ν•œλ‹€. κ·Έλž˜μ„œ λ°”λΌλ³΄λŠ” κ°μ²΄λŠ” λ™μΌν•˜κ³  값을 λ³€κ²½ν•  κ²½μš°μ— λ‹€λ₯Έ μ›μ†Œμ˜ 값도 λ³€ν•˜λŠ” ν˜„μƒμ΄ λ°œμƒν•˜λ‹ˆ 값을 λ³€κ²½ν•˜μ§€ μ•ŠλŠ” κ²½μš°μ—λ§Œ μ‚¬μš©ν•˜λŠ” 것이 μ’‹λ‹€κ³  ν•œλ‹€. μ„ μ–Έ 방식을 λ³€κ²½ν•˜λ‹ˆκΉŒ λ‹€ν–‰νžˆ λ¬Έμ œμ—†μ΄ 정닡을 ꡬ할 수 μžˆμ—ˆλ‹€!!

+ Recent posts