BAEKJOON Online Judge(BOJ) 문제입니다.
문제
https://www.acmicpc.net/problem/17140
내가 작성한 코드
from collections import defaultdict
def read_data():
r, c, k = map(int, input().rstrip().split())
A = []
for _ in range(3):
A.append(list(map(int, input().rstrip().split())))
return r-1, c-1, k, A
def R(A, row):
for r in range(row):
yield A[r]
def C(A, row, col):
for c in range(col):
yield [A[r][c] for r in range(row)]
def sorting(arr):
counter = defaultdict(int)
for k in arr:
counter[k] += 1
# 정렬
nw_arr = []
for k, v in sorted(counter.items(), key= lambda x: (x[1], x[0])):
if k != 0:
nw_arr.append(k)
nw_arr.append(v)
return nw_arr
def operation(A):
if len(A) >= len(A[0]):
gen = R(A, len(A))
else:
gen = C(A, len(A), len(A[0]))
nw_A = []
mx = 0
for arr in gen:
# 정렬 결과
nw_arr = sorting(arr)
# 100 초과 내용 자르기
nw_arr = nw_arr[:100]
# 최대 길이 구하기
mx = max(mx, len(nw_arr))
# nw_A에 추가
nw_A.append(nw_arr)
# 0 붙이기
for arr in nw_A:
for _ in range(len(arr), mx):
arr.append(0)
# C인 경우 A 뒤집기
if len(A) < len(A[0]):
real_nw_A = [[] for _ in range(mx)]
for c in range(len(nw_A)):
for r in range(mx):
real_nw_A[r].append(nw_A[c][r])
nw_A = real_nw_A
return nw_A
def get_answer(r, c, k, A):
time = 0
while time < 101:
if len(A) > r and len(A[0]) > c and A[r][c] == k:
return time
A = operation(A)
time += 1
return -1
r, c, k, A = read_data()
print(get_answer(r, c, k, A))
- 100초 조건
- 100초까지 포함
- time < 101
다른 사람이 작성한 코드
None
- 강한 구현문제로 다른 코드를 참고하지 않음
기억해야할 것
'코딩테스트' 카테고리의 다른 글
[백준][구현] 아기 상어 (0) | 2022.04.29 |
---|---|
[백준][구현] 미세먼지 안녕! (0) | 2022.04.29 |
[백준][구현] 연구소 3 (0) | 2022.04.29 |
[백준][구현] 게리멘더링 2 (0) | 2022.04.28 |
[백준][구현] 새로운 게임 2 (0) | 2022.04.28 |