코딩테스트/ELSE

[JO] 1339 문자삼각형2 - JAVA

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

1. 문제

 

JUNGOL

 

www.jungol.co.kr

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

< 처리조건 > 
(1) 오른쪽 가운데 행에 문자 'A'를 채우고 왼쪽 열로 이동하여 위에서 아래로 채워나간다.
(2) 가장 왼쪽 행까지 반복하여 모두 채워 나간다. (문자 'Z'다음에는 'A'부터 다시 시작한다.)


2. 풀이

배열에 모아서 출력했다. 절반부터 줄여가면서 문자를 저장하는데 현재 열번호가 행번호보다 작거나, 열번호가 N-1(인덱스가 0부터 시작하기 때문)에서 행번호를 뺀 것보다 큰 경우는 문자를 저장하지 않고 공백만 저장했다.

출력할 때 열번호는 최대 절반까지 출력했다. 원래는 전부 출력했었는데 사이트에 나와있는 공백과 내 공백이 달라서 틀렸다고 나와 수정했다. 

import java.util.Scanner;

public class JO_1339_문자삼각형2 {
   public static void main(String[] args) {
      int N = new Scanner(System.in).nextInt();
      if(N<1 || N>100 || N%2==0){
         System.out.println("INPUT ERROR");
         return;
      }
      char[][] arr = new char[N][N];

      int half = N/2;
      int ch = 0;
      for(int i=half;i>=0;i--){
         for(int j=0;j<N;j++){
            if(j<i || j>N-1-i) arr[j][i] = ' ';
            else {
               arr[j][i] = (char)(ch+'A');
               ch = (ch+1)%26;
            }
         }
      }

      StringBuilder sb = new StringBuilder();
      for(int i=0;i<N;i++){
         for(int j=0;j<=half;j++){
            sb.append(arr[i][j]).append(' ');
         }
         sb.append('\n');
      }


      System.out.print(sb);
   }
}

3. 결과

공백때문에 몇 번 틀린 기록이다.

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

[Softeer] 금고털이 - JAVA  (0) 2023.02.03
[JO] 1658 최대공약수와 최소공배수  (0) 2022.07.31
[JO] 1338 문자삼각형1 - JAVA  (0) 2022.06.02
[JO] 1291 구구단 - JAVA  (0) 2022.06.01
[JO] 2577 회전초밥 - JAVA  (0) 2022.04.06

댓글