Machineboy空
B155:スタンプアート, 2차원 배열 본문
문제요약
스탬프를 이어 찍었을 때 나오는 그림을 출력하라.

난이도
B rank
풀이 포인트

REVIEW
시간들이면 풀수 있는 문제인건 확실한데, 뇌에 힘을 주기 귀찮은 대표적인 문제.
이런 문제는 대부분 어떻게 하면 되겠네. 하고 지피티를 자꾸 돌려버린다.
요즘 정말 나의 힘으로 온전히 해내는 일이 없다는 생각이 드는데,
완벽히 숙지할때까지 도중에 포기치 않고 해내는 근성이 필요함..
엄청난 알고리즘적 사고가 아닌 나머지와 몫을 적절히 다뤄 좌표끼리 매핑할 수 있느냐인 문제!
CODE
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var line = Console.ReadLine().Split();
int H = int.Parse(line[0]);
int W = int.Parse(line[1]);
int N = int.Parse(line[2]);
List<char[,]> stamps = new List<char[,]>();
for(int i = 0; i < N; i++)
{
char[,] stamp = new char[H,W];
for(int j = 0; j < H; j++)
{
var line2 = Console.ReadLine();
for(int k = 0; k < W; k++ ){
stamp[j,k] = line2[k];
}
}
stamps.Add(stamp);
}
var line3 = Console.ReadLine().Split();
int h = int.Parse(line3[0]);
int w = int.Parse(line3[1]);
int[,] grid = new int[h,w];
for(int i = 0; i < h; i++){
var line4 = Console.ReadLine().Split();
for(int j = 0; j < w; j++){
grid[i,j] = int.Parse(line4[j]);
}
}
char[,] final = new char[h*H, w*W];
for(int i = 0; i < h*H; i++){
for(int j = 0; j < w*W; j++){
int gi = i / H;
int gj = j / W;
int stampIndex = grid[gi, gj] - 1;
char[,] stamp = stamps[stampIndex];
final[i, j] = stamp[i % H, j % W];
}
}
for (int i = 0; i < h * H; i++)
{
for (int j = 0; j < w * W; j++)
{
Console.Write(final[i, j]);
}
Console.WriteLine();
}
}
}
'Computer > Coding Test' 카테고리의 다른 글
乗り間違い : BFS, dist[] (0) | 2025.03.31 |
---|---|
Excercism - PhoneNumber : Regular Expressions (0) | 2025.03.04 |
Excercism - Matrix : 2차원 배열 (0) | 2025.02.28 |
Excercism - LargestSeriesProduct LINQ 연습 Skip Take (0) | 2025.02.27 |
Excercism - Raindrop (0) | 2025.02.27 |