Algorithm/프로그래머스

[Python] [코딩 기초 트레이닝] / 그림 확대

code-bean 2024. 8. 24. 18:55
[문제 설명]

직사각형 형태의 그림 파일이 있고, 이 그림 파일은 1 × 1 크기의 정사각형 크기의 픽셀로 이루어져 있습니다.
이 그림 파일을 나타낸 문자열 배열 picture과 정수 k가 매개변수로 주어질 때,
이 그림 파일을 가로 세로로 k배 늘린 그림 파일을 나타내도록
문자열 배열을 return 하는 solution 함수를 작성해 주세요.



[제한사항]
1. 1 ≤ picture의 길이 ≤ 20
2. 1 ≤ picture의 원소의 길이 ≤ 20
3. 모든 picture의 원소의 길이는 같습니다.
4. picture의 원소는 '.'과 'x'로 이루어져 있습니다.
5. 1 ≤ k ≤ 10

 

def solution(picture, k):
    answer = []
    return answer

 

 

- 입출력 예를 보고 생각이 꼬여버림.

- 검색해서 다른 사람들이 푼 코드 보고 해결함.

 

 

 

[A] (내가 쓴 답)

def solution(picture, k):
    answer = []
    for pic in picture :
        pic = "".join([p*k for p in pic])
 
        for _ in range(k) :
            answer.append(pic)
            
    return answer

 

* 문자열도 k배 늘리고, 리스트도 k배 늘리기

* _ 의 의미 : i 라고 생각했을 때 i를 사용하지 않고 반복하게 되는 경우, 따로 선언해주지 않는다.

 

 

 

[A] 다른 답들

def solution(picture, k):
    answer = []
    for i in range(len(picture)):
        for _ in range(k):
            answer.append(picture[i].replace('.', '.' * k).replace('x', 'x' * k))
    return answer

 

def solution(picture, k):
    answer = []
    
    for row in picture: # 이미지의 한 줄을 가져온다.
        resized = ''
        
        for pixel in row:
            resized += pixel * k # 한 픽셀을 k배 만큼 가로로 늘린다.
        
        for _ in range(k):
            answer.append(resized) # 가로로 늘려진 이미지 한 줄을 k배 만큼 세로로 늘린다. 
    
    return answer