코딩테스트/ELSE

[JO] 1338 문자삼각형1 - JAVA

5월._. 2022. 6. 2.
728x90

1. 문제

 

JUNGOL

 

www.jungol.co.kr

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

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


2. 풀이

배열로 모아서 출력하지 않고 StringBuilder로 한 줄 한 줄 계산했다.

해당 열의 첫 번째 문자는 'A'+열의 번호와 같고, 그 다음부터는 그 전 문자+N-1, +N-2 ... 와 같기 때문에 plus 변수를 두었다.

첫 번째 문자열을 정할 때 i%26을 해야 알파벳에서 벗어나지 않는다.

import java.util.Scanner;

public class JO_1338_문자삼각형1 {
   public static void main(String[] args) {
      int N = new Scanner(System.in).nextInt();

      StringBuilder sb = new StringBuilder();
      int ch,plus;
      for (int i = 0; i < N; i++) {
         ch = i%26;
         plus = N-1;
         for (int j = N - 1; j >= 0; j--) {
            if (j > i) sb.append(' ');
            else {
               sb.append((char)(ch+'A'));
               ch = (ch+plus--)%26;
            }
            sb.append(' ');
         }
         sb.append('\n');
      }

      System.out.print(sb);
   }
}

3. 결과

ch초기값을 설정할 때 i%26을 하지 않고 바로 i를 넣어서 틀렸다.

'코딩테스트 > ELSE' 카테고리의 다른 글

[JO] 1658 최대공약수와 최소공배수  (0) 2022.07.31
[JO] 1339 문자삼각형2 - JAVA  (0) 2022.06.03
[JO] 1291 구구단 - JAVA  (0) 2022.06.01
[JO] 2577 회전초밥 - JAVA  (0) 2022.04.06
[JO] 1681 해밀턴 순환회로 - JAVA  (0) 2022.02.25

댓글