Algorithm/문제 풀이 / / 2020. 1. 25. 15:39

[JUNGOL_1307 - JAVA] 문자사각형1

반응형

문제

정사각형의 한 변의 길이 n을 입력받은 후 다음과 같은 문자로 된 정사각형 형태로 출력하는 프로그램을 작성하시오.

< 처리조건 >
문자의 진행 순서는 맨 오른쪽 아래에서 위쪽으로 'A'부터 차례대로 채워나가는 방법으로 아래 표와 같이 왼쪽 위까지 채워 넣는다. 

'Z' 다음에는 다시 'A'부터 반복된다.

 

 

입력형식

정사각형 한 변의 길이 n(n의 범위는 1이상 100 이하의 정수)을 입력받는다.

 

출력형식

위의 형식과 같이 한변의 길이가 n인 문자 사각형을 출력한다. 문자 사이는 공백으로 구분하여 출력한다.

배열을 사용하지 않고 풀려하다보니 시간이 좀 걸렸다.

배열을 사용한다면 더 간단히 풀 수 있을 것으로 생각된다.

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		char ch = 'A';

		/*
		 * 알파벳의 갯수 : 26개 -1을 하여, 범위의 마지막 문자 탐색 ex) n=6 일때 J 출력
		 */
		ch = (char) ('A' + ((n * n) % 26) - 1);

		for (int i = 0; i < n; i++) {
			
			if (ch - i < 'A') {				// 범위를 벗어난 ch에 대한 조건문
				ch = (char) ('Z' + i);		// ch-i = i행 첫글자, 이 첫 글자가 범위 밖일때,
											// ex) 0행 첫글자 = A 이라면, 1행 첫글자 = Z가되어야 한다.
											// 이와같이 ch을 초기화 해준다면 밑의 temp를 설정할때 범위를 벗어나지 않는다.
			}
            
			char temp = (char) (ch - i); // 문제의 출력을 만족하기 위한 마지막 문자로 시작
											// 다음행의 첫글자는 마지막행은 -i 이다.
											// ex) n=6 일때, J 아랫글자는 I 이다.
			
			for (int j = 0; j < n; j++) {
				System.out.print(temp + " ");
				temp -= n % 26; // 행 단위 출력 ex) n=6 일때, J 바로 우측은 D 이다.
								// n 단위 만큼의 차이 j 와 d 의 차이는 6 이다.

				if (temp < 'A') {
					temp += 26; // 알파벳 갯수 26개 만큼 한정 시키기 위한 조건문
				}
			}
			System.out.println(); // 개행
		}
	}

}

 

http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=2071&sca=2010

 

JUNGOL | 문자사각형1 > 문제은행

정사각형의 한 변의 길이 n을 입력받은 후 다음과 같은 문자로 된 정사각형 형태로 출력하는 프로그램을 작성하시오. < 처리조건 > 문자의 진행 순서는 맨 오른쪽 아래에서 위쪽으로 'A'부터 차례대로 채워나가는 방법으로 아래 표와 같이 왼쪽 위까지 채워 넣는다.  'Z' 다음에는 다시 'A'부터 반복된다. 정사각형 한 변의 길이 n(n의 범위는 1이상 100 이하의 정수)을 입력받는다. 위의 형식과 같이 한변의 길이가 n인 문자 사각형을 출력한다. 문자 사

www.jungol.co.kr

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유