문자삼각형1 > 문제은행

본문 바로가기


실력키우기 도형만들기

1338 : 문자삼각형1

제한시간: 1000 ms    메모리제한: 64 MB
해결횟수: 630 회    시도횟수: 1660 회   



삼각형의 높이 N을 입력받아서 아래와 같이 문자 'A'부터 차례대로 왼쪽 대각선으로 채워서 삼각형 모양을 출력하는 프로그램을 작성하시오.


< 처리조건 >
(1) 오른쪽 위부터 왼쪽 아래쪽으로 이동하면서 문자 'A'부터 차례대로 채워나간다.
(2) N번 행까지 채워지면 다시 오른쪽 둘째 행부터 왼쪽 아래로 채워나간다.
(3) 삼각형이 모두 채워질 때까지 반복하면서 채워 나간다. (문자 'Z'다음에는 'A'부터 다시 시작한다.)


e3050b66a1b29a01767400d7560a4131_1449726
 


삼각형의 높이 N(N의 범위는 100 이하의 양의 정수)을 입력받는다.


주어진 형태대로 높이가 N인 문자삼각형을 출력한다. 
문자 사이는 한 개의 공백으로 구분한다.

[Copy]
5
[Copy]
        A
      B F
    C G J
  D H K M
E I L N O


<생각하기>
배열에 채우는 순서를 먼저 생각해보자.
(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)으로 초기화 하고 출력할 때 널값인 경우 공백을 출력하면 된다.

<코드>
01 for (i = 1; i <= n; i++) {
02     for (j = i, k = n; j <= n; j++, k--) {
03         arr[j][k] = alpha++;
04         if(alpha > 'Z') alpha = 'A';
05     }
06 }

<코드분석>
 01 : i는 처음 시작하는 행의 위치를 나타낸다.
 02 ; j는 행의 위치로 i부터 n까지 증가한다. k는 열의 위치로 n부터 1씩 감소한다.
 for문에서 초기값과 증감에 여러개의 연산을 처리하려면 위와 같이 ','로 구분하여 작성하면 된다.
 04 : 알파벳이 'Z'보다 커지면 'A'로 바꾸어 준다.


출처 : jungol



HancomEducation E-mail : hancomc@hotmail.com, comkiwer@naver.com Tel : 070-7163-5782 FAX : 031-388-0996 정올소개 이용약관 개인정보처리방침
경기도 안양시 동안구 호계동 1065-10 협성골드프라자 601호, 경기도 안양시 동안구 평촌대로 109 협성골드프라자 601호
Copyright@2010-2015 jungol. All right reserved.