문제
다솔이는 어떤 문자열이 주어졌을 때, 장식을 하려고 한다.
장식하는 방법은 다음과 같다.
한 개의 문자가 입력되었을 때,
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();
}
}
}
}
'Problem Solving > SWEA' 카테고리의 다른 글
[SWEA] 5356. 의석이의 세로로 말해요 (0) | 2020.02.21 |
---|---|
[SWEA] 5162. 두가지 빵의 딜레마 (0) | 2020.02.21 |
[SWEA] 4676. 늘어지는 소리 만들기 (0) | 2020.02.21 |
[SWEA] 4466. 최대 성적표 만들기 (0) | 2020.02.21 |
[SWEA] 4406. 모음이 보이지 않는 사람 (0) | 2020.02.21 |
댓글