본문 바로가기
Problem Solving/SWEA

[SWEA] 4751. 다솔이의 다이아몬드 장식

by 테리는당근을좋아해 2020. 2. 21.

문제

다솔이는 어떤 문자열이 주어졌을 때, 장식을 하려고 한다.

 

장식하는 방법은 다음과 같다.

 

한 개의 문자가 입력되었을 때,

5개의 문자가 입력되었을 때,

 

입력으로 단어가 주어졌을 때 출력으로 장식된 단어를 구하는 문제

 

풀이방법

입력된 단어의 길이를 k라고 하면 출력결과는 5 X (4k - 1) 크기의 2차원 배열로 나타낼 수 있다.

 

각 행마다 일정한 패턴을 가지고 있으며 그 패턴은 다음과 같이 구할 수 있다.

 

1) 0행, 4행 : 2, 6, 10, ... 번째 열에 '#'이 들어가고 나머지 원소는 '.'

2) 1행, 3행 : 짝수 열에는 '.', 홀수 열에는 '#'

3) 2행 : 4의 배수 열에 '#', 홀수 열에는 '.' 2, 6, 10, ...번 째 열에는 입력된 문자열

 

소스코드

package samsung;

import java.util.*;

public class s_4751 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int test = sc.nextInt();
		for(int t = 1; t <= test; t++) {
			String s = sc.next();
			int n = 3*(s.length()-1)+s.length()+4;
			char[][] a = new char[5][n];
			int k = 0;
			for(int i = 0; i < n; i ++) {
				if(i % 2 == 0) {
					a[1][i] = '.';
					a[3][i] = '.';
				}
				else {
					a[1][i] = '#';
					a[3][i] = '#';
					a[2][i] = '.';
				}
				if((i-2)%4 == 0) {
					a[0][i] = '#';
					a[4][i] = '#';
					a[2][i] = s.charAt(k);
					k++;
				}
				else {
					a[0][i] = '.';
					a[4][i] = '.';
				}
				if(i % 4 == 0) {
					a[2][i] = '#';
				}
			}
			
			for(int i = 0; i < 5; i++) {
				for(int j = 0; j < n; j++) {
					System.out.print(a[i][j]);
				}
				System.out.println();
			}
		}
	}
}

 

댓글