※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 1262번 문제인 알파벳 다이아몬드이다.
문제는 아래 링크를 확인하자.

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

 

크기가 x인 다이아몬드로 격자를 채우면 각 행은 x행마다 반복되며 열 또한 x행마다 반복됨을 관찰하자.

 

따라서 r행(c\)열(0-based)의 문자는 rc열의 문자와 같게 된다. 이 문자가 무엇인지를 계산해 문제를 해결하자. 크기가 x인 정사각형 격자에 적힌 문자는 격자의 중심으로부터 떨어진 각 칸의 맨해튼 거리와 관계 있음을 이용하면 계산을 빠르게 할 수 있다.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

int N, NN, RL, CL, RR, CR;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> N >> RL >> CL >> RR >> CR;
	NN = N * 2 - 1;
	N--;
	for (int r = RL; r <= RR; r++) {
		for (int c = CL; c <= CR; c++) {
			int rr = r % NN, cc = c % NN;
			int val = abs(rr - N) + abs(cc - N);
			if (val > N) cout << '.';
			else cout << (char)('a' + (val % 26));
		}
		cout << '\n';
	}
}
728x90

+ Recent posts