티스토리 뷰
풀이과정
처리조건 기본 format:
for (int i = 1; i <= n; i++){
for (int j = i, k = n; j <= n; j++, k--){
}
}
2번과 3번 조건을 만족하기 위해 뒤에 들어가는 루프는 j를 i부터 n까지 설정하고 더하고 k를 빼줌으로써 문제에서 요구한 모양으로 일단 배열을 알파벳으로 채움.
(1, 5) (2, 4) (3, 3) (4, 2) (5, 1) (2, 5) (3, 4) (4, 3) (5, 2) (3, 5) (4, 4) (5, 3) (4, 5) (5, 4) (5, 5) 순서로 채워야함.
출력과정
여기가 좀 어려웠는데,
이중포문으로 j = i 부터 n - 1까지 돌면서 먼저 공백들을 채워주고 (아니면 공백이 없어서 출력이 ABCDE가 다 왼쪽에 붙어나옴)
j = 1 부터 n까지 돌면서 null 값이 아니면 출력을 해야함.(2차원 배열 모두 '\0' null로 처음에 지정함.)
처음에는 그냥 루프 2개로 출력하는건줄 알고 출력하다가 루프 2개로는 원하는모양 나오지 않는다는걸 확인.
코드
#include <iostream>
#include <vector>
using namespace std;
int main(){
int n;
vector<vector<char>> arr(101, vector<char>(101, '\0'));
cin >> n;
char alpha = 'A';
for (int i = 1; i <= n; i++){
for (int j = i, k = n; j <= n; j++, k--){
arr[j][k] = alpha++;
if (alpha > 'Z'){
alpha = 'A';
}
}
}
for (int i = 1; i <= n; i++){
for (int j = i; j < n; j++){
cout << " ";
}
for (int j = 1; j <= n; j++){
if (arr[i][j] != '\0'){
//cout << i << " ";
//cout << j << " ";
cout << arr[i][j] << " ";
}
}cout << '\n';
}
}
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 24954
- 1304
- 3427
- 트리 순회
- 1338
- 15652
- 세로읽기
- 색종이(중)
- 1438
- 정올
- 색종이(초)
- 단어집합2
- 백준
- 볼 모으기
- 15654
- 문자열찾기
- 연필공장
- 15651
- 문자사각형
- 볼모으기
- 2604
- 문자삼각형1
- 5545
- N과M
- 숫자사각형3
- 8129
- 1535
- 몇번째조합
- 15650
- 2857
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함