※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 27268번 문제인 Рамки이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/27268
27268번: Рамки
Первая строка содержит целые числа $h$, $w$ и $n$ --- размеры поля и число рамок ($2 \le h, w \le 80$, $1 \le n \le 26$). Следующие $n$ строк содержат по четыре целых
www.acmicpc.net
주어지는 직사각형 영역의 테두리를 'a'부터 알파벳을 차례대로 이용해 표기하는(겹치는 칸이 있다면 덮어쓴다) 문제이다. 반복문을 이용해 직사각형의 각 변을 각 문자로 채워넣어 문제를 해결하자.
아스키 코드상에서 소문자들은 차례대로 값이 1씩 차이나게끔 할당되어 있으므로 반복문을 이용해 사용할 문자를 차례대로 접근할 수 있다. 잘 모르겠다면 아래 구현의 19-20번째 줄을 확인해보자.
입력이 1-based index로 주어짐에 유의하자.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
typedef long long ll;
int R, C, N;
char board[80][80];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> R >> C >> N;
for (int r = 0; r < R; r++) {
for (int c = 0; c < C; c++) {
board[r][c] = '.';
}
}
for (int i = 0; i < N; i++) {
char cur = 'a' + i;
int R1, C1, R2, C2; cin >> R1 >> C1 >> R2 >> C2;
R1--, C1--, R2--, C2--;
for (int r = R1; r <= R2; r++) board[r][C1] = board[r][C2] = cur;
for (int c = C1; c <= C2; c++) board[R1][c] = board[R2][c] = cur;
}
for (int r = 0; r < R; r++) {
for (int c = 0; c < C; c++) {
cout << board[r][c];
}
cout << '\n';
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 25374 // C++] 등급 계산하기 (0) | 2023.01.23 |
---|---|
[BOJ 26432 // C++] Walktober (0) | 2023.01.23 |
[BOJ 25204 // C++] 문자열 정렬 (0) | 2023.01.22 |
[BOJ 23327 // C++] 리그전 오브 레전드 (0) | 2023.01.22 |
[BOJ 23326 // C++] 홍익 투어리스트 (0) | 2023.01.21 |