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.