문제 링크
문제 요약
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()