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

 

이번에 볼 문제는 백준 27220번 문제인 Ромб이다.
문제는 아래 링크를 확인하자.

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

 

27220번: Ромб

Выведите $n$ строк по $n$ символов. Клетка ромба обозначается символом <<*>>, клетка, не лежащая в ромбе, обозначается символом <<.>>.

www.acmicpc.net

문자로 구성된 n행 n열의 사각형을 찍는다. 이 때, 각 칸과 사각형의 중심 사이의 거리가 a 이상 b 이하이면 '*'를, 그렇지 않다면 '.'을 출력해야 한다.

 

중심의 좌표를 미리 구해두고, 해당 좌표와의 (맨해튼) 거리를 매 칸마다 계산하는 코드를 이용해 위의 내용을 구현하고 문제를 해결하자.

 

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

#include <iostream>
using namespace std;

int N, A, B;
int X, Y;

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

	cin >> N >> A >> B;
	X = Y = N / 2;
	for (int r = 0; r < N; r++) {
		for (int c = 0; c < N; c++) {
			int dist = abs(r - X) + abs(c - Y);
			if (A <= dist && dist <= B) cout << '*';
			else cout << '.';
		}
		cout << '\n';
	}
}
728x90

+ Recent posts