백준 23841번: 데칼코마니


문제 설명

  • 말 그대로 좌우가 대칭이 되는 데칼코마니를 만들어야 합니다.

접근법

  • 세로로 대칭을 이루도록 리스트를 만들어 주면 됩니다.
  • 26가지 물감(G,R,B,Y...)을 모두 고려하는 것이 아니라 빈 곳('.')이 아니면 해당 물감과 동일한 색을 반대쪽에 칠하면 됩니다.
  • 문자열 변수의 한 값을 바꾸는 것보다 문자열을 list에 담는 게 더 효율적입니다.

    문자열 a = "abcaa"의 3번 째 값을 k로 바꾸기 위해서는 a = a[:2]+'k'+a[3:]
    리스트 a = ["a","b","c","a","a"]의 3번 째 값을 k로 바꾸기 위해서는 a[2] = 'k'

정답

N,M = list(map(int,input().split(' ')))

lst = []#빈 리스트를 만듭니다
for _ in range(N):
    lst.append(list(input()))#빈 리스트에 리스트 형태로 만든 값을 넣습니다
"""
 lst = [['G','.','.','R','.','.'],
	['.','.','B','.','.','.'],
        ['Y','.','.','.','.','.']]
"""
        


for i in range(N):
    for j in range(M):
        if lst[i][j] != '.': #lst[i][j]에 칠해진 값이 있다면
            lst[i][M-j-1] = lst[i][j] #반대쪽(lst[i][M-j-1])에 lst[i][j]와 동일한 색을 칠합니다

#정답을 출력합니다
for i in range(N):
    print(''.join(lst[i]))

좋은 웹페이지 즐겨찾기