본문 바로가기
Algorithm Problem Solving/BaekJoon

[BaekJoon] 백준 17363 우유가 넘어지면? (Python / 파이썬)

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

BaekJoon 백준 17363 우유가 넘어지면? 문제는 "우유"가 세로로 적혀 있는 상자를 왼쪽으로 툭 넘어뜨리면 "아야"가 된다. 친구들이 웃지 않자, 공간지각력이 부족한 친구들을 위해 자를 넘어뜨리는 프로그램을 만들어 결과를 보여주는 문제이다. 난이도는 Bronze 1이다.

 

BaekJoon 17363 우유가 넘어지면? 문제 정보

출처

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

알고리즘 분류

- 구현

난이도

- 브론즈 1 / Bronze 1

 

우유가 넘어지면? 문제 요약

  • "우유"가 세로로 적혀 있는 상자를 왼쪽으로 툭 넘어뜨리면 "아야"가 되잖아? 이게 마치 우유가 넘어져서 아파하는 것 같다는 점이 웃음 포인트야!
  • 친구들이 웃지 않자, 성원이는 친구들이 공간지각력이 부족해 상자를 넘어뜨리는 모습을 상상하지 못한다고 생각했다. 그래서 상자를 넘어뜨리는 프로그램을 만들어 친구들에게 결과를 보여주기로 했다.
  • 성원이는 상자에 "우유"가 아니라 다른 그림이 그려져 있어도 프로그램이 잘 동작하기를 원한다. 성원이는 상자의 면을 격자로 나누고 각 칸에 아래 문자들 중 하나를 그려 넣는 방식으로 그림을 그린다.
  • 그림의 세로 길이와 가로길이를 의미하는 정수 N M(1 ≤ N, M ≤ 100)이 주어진다.
  • 그림을 왼쪽으로 넘어뜨렸을 때의 결과를 구하여 출력한다.

 

문제 풀이 과정

  1. 입력된 문자를 키로, 돌렸을 때 결과 문자의 아스키코드를 값으로 하는 딕셔너리를 정의한다.
  2. 그림을 입력받고, 첫 행 M열부터 N행 M열 까지를 방문 하여 딕셔너리를 참고하여 돌렸을 때의 문자를 저장한다.
  3. M열 ~ 1 열의 결과를 모두 저장하고 이 결과를 출력한다.

 

코드 및 설명
  • d {} - 입력된 문자를 키로, 돌렸을 때 결과 문자의 아스키코드를 값으로 하는 딕셔너리
  • box [] - 입력받은 상자의 그림
  • rotate [][] - 왼쪽으로 돌린 후 상자의 그림
  • row [] - 왼쪽으로 돌린 후 i 행의 결과
# 문자를 돌렸을 때 결과 문자의 아스키 코드
d = {'.': 46, 'O': 79, '-': 124, '|': 45, '/': 92, '\\': 47,
     '^': 60, '<': 118, 'v': 62, '>': 94}

N, M = map(int, input().split())
box = []
for _ in range(N):
    box.append(input())

rotate = []  # 왼쪽으로 돌린 후 결과
for i in range(M - 1, -1, -1):
    row = []  # 돌린 후 i 행의 결과
    for j in range(N):
        row.append('%c' % d[box[j][i]])
    rotate.append(row)

for r in rotate:
    print(''.join(r))

BaekJoon 백준 17363 우유가 넘어지면? 문제를 파이썬 python으로 풀어보았다. 난이도는 Bronze 브론즈 1이다. 

728x90
반응형

댓글