코딩테스트/SWExpertAcademy

다솔이의 다이아몬드 장식 Python(SW Expert Academy)

멍토 2020. 4. 1.

난이도 : D3

문제번호 : 4751

※ 저의 풀이가 무조건적인 정답은 아닙니다.

다른 코드가 좀더 효율적이고 좋을 수 있습니다.

다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.

문제 주소 및 출처입니다.

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWSNw5jKzwMDFAUr&categoryId=AWSNw5jKzwMDFAUr&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


목차

1. 문제 설명

2. 문제 해석

3. 소스 코드


1. 문제 설명

다솔이는 어떤 문자열을 하나 가지고 있는데, 이 문자열이 별로 아름답지 못하다고 생각하고 있다.

그래서 장식을 해주기로 했다.

예를 들어 문자열이 “D”라면 주위를 ‘#’로 이루어진 다이아몬드로 감싸서 다음과 같이 5x5크기로 장식한다.

빈 곳은 ‘.’로 표시한다.

만약 문자열의 길이가 1보다 더 크면, 인접한 문자는 ‘#’과 ‘.’을 공유하여 장식한다.

예를 들어 문자열이 “APPLE”이면 다음과 같이 장식한다.

주어진 문자열을 장식해주는 프로그램을 작성하라.

입력

첫 번째 줄에 테스트 케이스의 수 T가 주어진다.

각 테스트 케이스의 첫 번째 줄에는 길이가 1이상 50이하인 문자열이 주어진다.

출력

각 테스트 케이스마다 다섯 줄에 걸쳐 장식된 문자열을 출력한다.

예시

입력 출력

2
D
APPLE

..#..
.#.#.
#.D.#
.#.#.
..#..
..#...#...#...#...#..
.#.#.#.#.#.#.#.#.#.#.
#.A.#.P.#.P.#.L.#.E.#
.#.#.#.#.#.#.#.#.#.#.
..#...#...#...#...#..

2. 문제풀이

줄이다 보니 엄청 줄여서 풀 수 있는 문제였다.

처음은 보면 양쪽에 .. 2개가있다.

그사이에는 #이 존재하는데 # 사이에는 ...이 3개가 조재한다.

두번재 줄은 .#이 반복해서 나타난다.

마지막은 양끝애 #. .#이 있고 사이에는 .#. 이 반복한다.

이걸 join 함수를 이용하여 나타내었다.


3. 소스코드

1
2
3
4
5
6
7
8
9
#D3 4751 다솔이의 다이아몬드 장식
= int(input())
for i in range(T):
    t = input()
    n = len(t)
    f = '..' + '...'.join('#'*n) + '..'
    s = '.#'*(n*2)+'.'
    t = '#.' + '.#.'.join(t) + '.#'
    print("{0}\n{1}\n{2}\n{1}\n{0}".format(f,s,t))

댓글

💲 광고입니다.