티스토리 뷰
1) 생각
문자가 주어지면 그 문자를 가지고 모양을 만들어라.
Ex) APPLE 일 경우
첫 번째 생각
문자를 가지고 만드는 패턴이 정형화되어있고, 세로의 길이는 무조건 5줄이다.
두 번째 생각
(1,5) 줄과 (2,4) 줄이 쌍이므로 두 줄중 한 줄을 만든뒤 복사해주면 된다.
2) 방안
한 줄 한 줄 패턴에 맞춰서 만들어 준다. 중앙 줄을 미리 만들어주면 나머지는 중앙 줄과 비교해서 만들어 줄 수 있다.
(2,4) 줄은 중앙 줄에서 '.'이 나오는 구간은 '#'이고 나머지는 '.'으로 표현된다.
(1,5) 줄은 중앙 줄에서 문자가 나오는 구간은 '#'이고 나머지는 '.'으로 표현된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | import java.io.IOException; import java.util.Scanner; public class Solution { public static void main(String[] args) throws IOException{ Scanner sc = new Scanner(System.in); int tc = sc.nextInt(); StringBuilder sb = new StringBuilder(); for(int i=1;i<=tc;i++) { String word = sc.next(); String[] result = new String[5]; for(int j=0;j<5;j++) result[j] = ""; // 중앙 문자열 만들기 result[2] = "#."; for(int j=0;j<word.length();j++) { if(j==word.length()-1) result[2] += word.charAt(j)+".#"; else result[2] += word.charAt(j)+".#."; } // 중앙 위, 아래 만들기 for(int j=0;j<result[2].length();j++) { if(result[2].charAt(j)=='.') result[1] += '#'; else result[1] += '.'; } result[3] = result[1]; // 맨 위, 맨 아래 만들기 for(int j=0;j<result[2].length();j++) { if(result[2].charAt(j)=='.'||result[2].charAt(j)=='#') result[0] += '.'; else result[0] += '#'; } result[4] = result[0]; for(int j=0;j<5;j++) sb.append(result[j]+"\n"); } System.out.println(sb); } } | cs |
'알고리즘 > SW Expert' 카테고리의 다른 글
[SW Expert] 4615. 재미있는 오셀로 게임 (0) | 2018.08.23 |
---|---|
[SW Expert] 4676. 늘어지는 소리 만들기 (0) | 2018.08.23 |
[SW Expert] 4789. 성공적인 공연 기획 (0) | 2018.08.23 |
[SW Expert] 5162. 두가지 빵의 딜레마 (0) | 2018.08.23 |
[SW Expert] 1206. [S/W 문제해결 기본] 1일차 - View (0) | 2018.08.22 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday