Notice
Recent Posts
Recent Comments
Link
알고리즘 모음(C++)
백준 23055 - 공사장 표지판(C++) 본문
문제 링크입니다. https://www.acmicpc.net/problem/23055
간단한 구현 문제입니다.
X를 만들면 쉽게 풀 수 있는 문제입니다.
먼저 '*'이 어디서 나왔는지를 확인해야합니다.
1. 1번째 행과 마지막 행에서는 '*'이 전부 나옵니다.
2. 1번째 열과 마지막 열에서는 '*'이 전부 나옵니다.
-> 큰 사각형의 '*'을 만들 수 있습니다.
이번에는 사각형 안에 있는 '*'에 대해서 생각해보겠습니다.
사각형의 가장 왼쪽 위를 (1,1) / 오른쪽 아래를 (N,N) 이라고 가정하겠습니다.
그렇다면 모든 곳을 (X,Y)로 나타낼 수 있습니다.
1. X == Y 일때 별이 나타난다.
2. X + Y - 1 == N 인 경우 별이 나타난다.
-> 큰 X모양의 '*'을 만들 수 있습니다.
자세한 것은 코드를 참고해주세요
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <cstring>
#include <string>
#include <queue>
#include <stack>
#include <cmath>
#define INF 98765432100
using namespace std;
int N;
void solve() {
for (int i = 1; i <= N; i++) {
if (i == 1 || i == N) {
for (int j = 1; j <= N; j++) {
cout << "*";
}
}
else {
for (int j = 1; j <= N; j++) {
if (j == 1 || j == N) cout << "*";
else if (i == j) cout << "*";
else if (i + j - 1 == N) cout << "*";
else cout << " ";
}
}
cout << "\n";
}
}
int main()
{
cin.tie(0);
cout.tie(0);
cin >> N;
solve();
return 0;
}
질문 및 조언은 댓글 남겨주세요
'백준' 카테고리의 다른 글
백준 2665 - 미로만들기(C++) (0) | 2022.03.26 |
---|---|
백준 18766 - 카드 바꿔치기(C++) (0) | 2022.03.25 |
백준 5972 - 택배 배송(C++) (0) | 2022.03.25 |
백준 21312 - 홀짝 칵테일(C++) (0) | 2022.03.23 |
백준 19944 - 뉴비의 기준을 뭘까?(C++) (0) | 2022.03.23 |