1338 : 문자삼각형1
- 제한시간
- 1000 ms
- 메모리제한
- 64 MB
- 해결횟수
- 469 회
- 시도횟수
- 1531 회
문제
삼각형의 높이 N을 입력받아서 아래와 같이 문자 'A'부터 차례대로 왼쪽 대각선으로 채워서 삼각형 모양을 출력하는 프로그램을 작성하시오.
< 처리조건 >
(1) 오른쪽 위부터 왼쪽 아래쪽으로 이동하면서 문자 'A'부터 차례대로 채워나간다.
(2) N번 행까지 채워지면 다시 오른쪽 둘째 행부터 왼쪽 아래로 채워나간다.
(3) 삼각형이 모두 채워질 때까지 반복하면서 채워 나간다. (문자 'Z'다음에는 'A'부터 다시 시작한다.)
입력형식
출력형식
입력 예5 |
출력 예A B F C G J D H K M E I L N O |
Hint!
<생각하기>
배열에 채우는 순서를 먼저 생각해보자.
(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)
i를 어떻게 정하는게 좋을지 여러 가지 방법이 있으므로 각자 생각해 보자.
아래의 소스는 i를 시작하는 행의 위치로 정하고 작성한 것이다.
배열은 널값(‘\0’, 0)으로 초기화 하고 출력할 때 널값인 경우 공백을 출력하면 된다.
<코드>
1 2 3 4 5 6 7 | for (i = 1; i <= n; i++) { for (j = i, k = n; j <= n; j++, k--) { arr[j][k] = alpha++; if(alpha > 'Z') alpha = 'A'; } } | cs |
<코드분석>
01 : i는 처음 시작하는 행의 위치를 나타낸다.
02 ; j는 행의 위치로 i부터 n까지 증가한다. k는 열의 위치로 n부터 1씩 감소한다. for문에서 초기값과 증감에 여러개의 연산을 처리하려면 위와 같이 ','로 구분하여 작성하면 된다.
04 : 알파벳이 'Z'보다 커지면 'A'로 바꾸어 준다.