본문 바로가기
Algorithm Problem Solving/BaekJoon

[BaekJoon] 백준 3035 스캐너 (Python / 파이썬)

by ʚ⇜❅🎕̈❄⇝ɞ 2021. 8. 23.
728x90
반응형

BaekJoon 백준 3035 스캐너 문제는 상근이는 스캐너를 이용해서 글자를 확대한 다음에 보려고 한다. 스캐너는 ZR과 ZC를 입력으로 받고, 1*1 크기였던 각 문자를 ZR*ZC크기로 확대해서 출력해 준다. 스캔을 거친 결과를 구하는 문제이다. 난이도는 Bronze 1이다.

 

BaekJoon 3035 스캐너 문제 정보

출처

- https://www.acmicpc.net/problem/3035

알고리즘 분류

- 문자열 string, 구현

난이도

- 브론즈 1 / Bronze 1

 

스캐너 문제 요약

  • 상근이는 영자 신문을 스캐너를 이용해서 글자를 확대한 다음에 보려고 한다.
  • 신문 기사는 글자로 이루어진 R*C 행렬로 나타낼 수 있다. 글자는 알파벳과 숫자, 그리고 마침표로 이루어져 있다.
  • 스캐너는 ZR과 ZC를 입력으로 받는다. 이렇게 되면, 스캐너는 1*1 크기였던 각 문자를 ZR*ZC크기로 확대해서 출력해 준다.
  • R과 C는 1과 50 사이의 정수이고, ZR과 ZC는 1과 5 사이의 정수이다. 
  • 신문 기사와 ZR, ZC가 주어졌을 때, 스캐너의 스캔을 거친 결과를 구하여 출력한다.

 

문제 풀이 과정

  1. 신문 기사를 입력받는다.
  2. 행만큼 반복하여 원래 행 * ZR의 크기로 저장하고, 저장한 행을 원래 열 * ZC 크기만큼 저장한다.
  3. 저장한 내용을 형식에 맞게 출력한다.

 

코드 및 설명
  • paper [][] - 입력받은 신문 기사를 저장하는 리스트
  • scanner [][] - 스캔을 거친 결과를 저장한 리스트
  • row [] - 신문 기사의 각 행의 내용을 저장한 리스트
R, C, ZR, ZC = map(int, input().split())
paper = []
scanner = []
for _ in range(R):
    paper.append(input())

for i in range(R):
    row = []  # 신문 기사의 i 행
    # 행 확대
    for j in range(C):
        row.append(paper[i][j] * ZC)

    # 열 확대
    for _ in range(ZR):
        scanner.append(row)

for s in scanner:
    print(''.join(s))

BaekJoon 백준 3035 스캐너 문제를 파이썬 python으로 풀어보았다. 난이도는 Bronze 브론즈 1이다. 

728x90
반응형

댓글