-
JUNGOL 실력키우기 도형만들기1 - 문자삼각형1 | 문자삼각형2보관함 2020. 1. 19. 09:42
기초 다지기에서 배운 내용을 응용하여 문제를 해결해야 하는 실력 키우기입니다.
실력 키우기는 비슷한 문제 유형별로 묶어서 풀어보겠습니다.
이번 포스팅에서는 도형만들기1의 문자삼각형 시리즈를 풀어보겠습니다.
1338 : 문자삼각형1
이번 문제는 우측으로 붙어있는 삼각형을 만드는 문제입니다. 그런데 이런 문제는 사실 왼쪽에 붙어있다고 가정하고 모양을 만든 뒤 우측 정렬이 되도록 공백을 맞춰주는 게 훨씬 쉬울 수 있습니다.
즉, 다음과 같은 모양을 만든 뒤 공백을 만들어주는 것이죠.
#include <iostream> using namespace std; int main(void) { int n; cin >> n; char arr[101][101]{}; char c = 'A'; for (int i = 0; i < n; ++i) { for (int j = 0; j < n - i; ++j) { arr[j + i][j] = c++; if (c > 'Z') c = 'A'; } } for (int i = 0; i < n; ++i) { for (int j = 0; j < n - 1 - i; ++j) { cout << " "; } for (int j = i; j >= 0; --j) { cout << arr[i][j] << ' '; } cout << endl; } }
http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=2074&sca=20
JUNGOL | 문자삼각형1 > 문제은행
삼각형의 높이 N을 입력받아서 아래와 같이 문자 'A'부터 차례대로 왼쪽 대각선으로 채워서 삼각형 모양을 출력하는 프로그램을 작성하시오. < 처리조건 > (1) 오른쪽 위부터 왼쪽 아래쪽으로 이동하면서 문자 'A'부터 차례대로 채워나간다. (2) N번 행까지 채워지면 다시 오른쪽 둘째 행부터 왼쪽 아래로 채워나간다. (3) 삼각형이 모두 채워질 때까지 반복하면서 채워 나간다. (문자 'Z'다음에는 'A'부터 다시 시작한다.) 삼각형의 높이 N(N의 범위는
www.jungol.co.kr
1339 : 문자삼각형2
이번 문제도 특이하게 결과가 제대로 안 나오고 있습니다.
JUNGOL에 코드를 제출한 결과 제가 실행한 결과는 다음과 같습니다.
문제와 동일하게 3입력 임의의 홀수 입력 현재 이 부분에 대해 문의를 한 상태이며 결과가 나오면 반영하도록 하겠습니다.
#include <iostream> using namespace std; int main(void) { int n; cin >> n; char arr[101][101]{}; char c = 'A'; for (int i = 0; i <= n / 2; ++i) { for (int j = n / 2 - i; j <= n / 2 + i; ++j) { arr[j][n / 2 - i] = c++; if (c > 'Z') c = 'A'; } } for (int i = 0; i < n; ++i) { for (int j = 0; j <= n / 2; ++j) { cout << arr[i][j] << ' '; } cout << endl; } }
해당 문제에 대한 답변을 받았으며 내용은 다음과 같았습니다.
위 답변대로 수정하고 입력 범위에 대한 제한을 추가했더니 성공했습니다. 아마 null 문자가 아닌 공백으로 표시를 해야 정답 처리가 되는 것 같습니다.
#include <iostream> using namespace std; int main(void) { int n; cin >> n; if (n < 1 || n > 100 || n % 2 == 0) { cout << "INPUT ERROR" << endl; return 0; } char arr[101][101]{}; char c = 'A'; for (int i = 0; i <= n / 2; ++i) { for (int j = n / 2 - i; j <= n / 2 + i; ++j) { arr[j][n / 2 - i] = c++; if (c > 'Z') c = 'A'; } } for (int i = 0; i < n; ++i) { for (int j = 0; j <= n / 2; ++j) { if (arr[i][j] == 0) cout << ' '; else cout << arr[i][j] << ' '; } cout << endl; } }
http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=2075&sca=20
JUNGOL | 문자삼각형2 > 문제은행
삼각형의 높이 N을 입력받아서 아래와 같이 문자 'A'부터 차례대로 맨 오른쪽 가운데 행부터 차례대로 아래와 같이 채워서 삼각형 모양을 출력하는 프로그램을 작성하시오. < 처리조건 > (1) 오른쪽 가운데 행에 문자 'A'를 채우고 왼쪽 열로 이동하여 위에서 아래로 채워나간다. (2) 가장 왼쪽 행까지 반복하여 모두 채워 나간다. (문자 'Z'다음에는 'A'부터 다시 시작한다.) 삼각형의 높이 N(N의 범위는 1이상 100 이하의 홀수)을 입력받는다.
www.jungol.co.kr