Post

Baekjoon16935 - 배열 돌리기 3(Python)

백준 사이트 16935 - 배열 돌리기 3 문제입니다.

☑️ 1. 문제

https://www.acmicpc.net/problem/16935


☑️ 2. Input , Output

자세한건 링크 참조..


☑️ 3. 분류 및 난이도

코딩테스트 준비 - 시뮬레이션과 구현 문제입니다.


☑️ 4. 생각한 것들

  • 구현문제라 그런지 노가다성이 좀 짙습니다.
  • 외에는 큰 어려움은 없었습니다. 배열 인덱스 오류가 잘 뜨는데, 입력값에 따라 map의 크기가 달라질 수 있으므로 입력 받을때마다 크기를 업데이트 해줘야합니다.

5. code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
def one_solution(temp_map):
    temp_map = temp_map[::-1]
    return temp_map


def two_solution(temp_map, size):
    for i in range(size):
        temp_map[i].reverse()
    return temp_map


def three_solution(temp_map, row, col):
    new_map = []
    for j in range(col):
        temp_list = []
        for i in range(row - 1, -1, -1):
            temp_list.append(temp_map[i][j])
        new_map.append(temp_list)
    return new_map


def four_solution(temp_map, row, col):
    new_map = []
    for j in range(col - 1, -1, -1):
        temp_list = []
        for i in range(row):
            temp_list.append(temp_map[i][j])
        new_map.append(temp_list)
    return new_map


def five_solution(temp_map, row, col):
    new_map = []
    row_cut = row // 2
    col_cut = col // 2
    up_step, down_step = temp_map[:row_cut], temp_map[row_cut:]
    one_step, two_step = [], []
    three_step, four_step = [], []
    for i in range(len(up_step)):
        one_step.append(up_step[i][:col_cut])
        two_step.append(up_step[i][col_cut:])
    for i in range(len(down_step)):
        three_step.append(down_step[i][col_cut:])
        four_step.append(down_step[i][:col_cut])
    for i in range(row_cut):
        new_map.append(four_step[i] + one_step[i])
    for i in range(row_cut):
        new_map.append(three_step[i] + two_step[i])

    return new_map


def six_solution(temp_map, row, col):
    new_map = []
    row_cut = row // 2
    col_cut = col // 2
    up_step, down_step = temp_map[:row_cut], temp_map[row_cut:]
    one_step, two_step = [], []
    three_step, four_step = [], []
    for i in range(len(up_step)):
        one_step.append(up_step[i][:col_cut])
        two_step.append(up_step[i][col_cut:])
    for i in range(len(down_step)):
        three_step.append(down_step[i][col_cut:])
        four_step.append(down_step[i][:col_cut])
    for i in range(row_cut):
        new_map.append(two_step[i] + three_step[i])
    for i in range(row_cut):
        new_map.append(one_step[i] + four_step[i])

    return new_map


input_map = []
n, m, r = map(int, input().split())
for i in range(n):
    temp_list = list(map(int, input().split()))
    input_map.append(temp_list)

commands = list(map(int, input().split()))
for command in commands:
    row = len(input_map)
    col = len(input_map[0])
    if command == 1:
        input_map = one_solution(input_map)
    elif command == 2:
        input_map = two_solution(input_map, row)
    elif command == 3:
        input_map = three_solution(input_map, row, col)
    elif command == 4:
        input_map = four_solution(input_map, row, col)
    elif command == 5:
        input_map = five_solution(input_map, row, col)
    else:
        input_map = six_solution(input_map, row, col)
for i in range(len(input_map)):
    print(' '.join(map(str, input_map[i])))



6. 후기

  • 코드가 너무 거대하고 심지어 solution5, solution6함수는 쪼개는 작업에 더해주는 작업도 있어서 시간 효율성에서 통과 못할줄 알았는데.. 잘되네요.

c++로 작성이 필요하거나 도움이 필요하시면 댓글을 작성해주세요.!! 기록용이라 설명이 자세하지 않습니다.

This post is licensed under CC BY 4.0 by the author.