※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 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
'BOJ' 카테고리의 다른 글
[BOJ 24838 // C++] 배열 구간합 놀이 (1) | 2023.01.19 |
---|---|
[BOJ 23324 // C++] 어려운 모든 정점 쌍 최단 거리 (0) | 2023.01.19 |
[BOJ 23323 // C++] 황소 다마고치 (0) | 2023.01.18 |
[BOJ 27246 // C++] Различные квадраты (0) | 2023.01.18 |
[BOJ 27194 // C++] Meeting Near the Fountain (0) | 2023.01.18 |