문제 링크

문제 요약

Rhonda는 0부터 9까지의 정수로 채워진 10x10 그리드 형태의 프로세서 칩 레이어들을 제작합니다. 최종 칩은 두 개 이상의 레이어를 쌓아 만들어지며, 각 레이어의 동일한 위치에 있는 셀 값들을 합산하여 최종 칩의 해당 셀 값을 결정합니다.

문제는 N개의 고유한 레이어 정보가 주어지고, 이어서 Q개의 쿼리가 들어옵니다. 각 쿼리에는 합산할 레이어들의 인덱스 목록이 주어지며 (인덱스는 0부터 시작), 해당 레이어들을 합산한 10x10 그리드를 출력하는 문제입니다.

출력 시 각 셀 값은 항상 두 자리 숫자로 0-패딩하고, 셀 사이에 공백을 두며, 각 쿼리 결과 사이에는 빈 줄을 두어야 하는 것을 잊지말아야 합니다.

풀이

이 문제는 주어진 여러 개의 10x10 레이어 중 특정 레이어들을 선택하여 합산하는 Simulation 문제입니다.

각 레이어를 저장해두고, 주어지는 쿼리에 따라 합산하여 출력하면 쉽게 해결할 수 있습니다.

정답 코드

def solve():
  n = int(input())
  chips = []
  for _ in range(n):
    chip = [[*map(int, list(input()))] for _ in range(10)]
    inp() # 빈줄 처리
    chips.append(chip)
  
  Q = int(input())
  for _ in range(Q):
    query = mii()
 
    ans = [[0] * 10 for _ in range(10)]
 
    for idx in query:
      for i in range(10):
        for j in range(10):
          ans[i][j] += chips[idx][i][j]
    
    for i in range(10):
      for j in range(10):
        print(f"{ans[i][j]:02d}", end=" ")
      print()
    print()
 
 
if __name__ == "__main__":
  tc = 1
  for t in range(1, tc+1):
    ret = solve()
 

연관 페이지

참고 문헌 / 사이트