728x90
반응형
Softeer 알고리즘 문제 풀이
Lv2. 진정한 효도
문제 링크: https://softeer.ai/practice/7374
Softeer - 현대자동차그룹 SW인재확보플랫폼
softeer.ai
풀이
한 행에서 최댓값과 최솟값을 저장하고 나서,
전체 땅 높이를 최댓값에 맞출 것인지, 최솟값에 맞출 것인지 경우에 따라 비용을 저장한다.
행마다 계산하는 것이 편해서, 열(세로)마다 계산하는 대신 함수로 만들고 행과 열을 바꿔서 사용했다.
import sys
input = sys.stdin.readline
ground_row = [[int(i) for i in input().split()] for _ in range(3)]
def solution(ground):
ans = 3 # 땅의 높이는 1이상 3이하이므로 절대 나올 수 없는 차이인 3으로 설정
for i in range(3):
max_height = max(ground[i]) # 해당 행에서 최댓값
min_height = min(ground[i]) # 해당 열에서 최솟값
min_case = 0
max_case = 0
for j in ground[i]:
min_case += j - min_height # 가장 작은 값에 맞추는 경우
max_case += max_height - j # 가장 큰 값에 맞추는 경우
ans = min(min_case, max_case, ans) # 그 중 최솟값
return ans
# 행열 바꿔서 저장
ground_col = list(map(list, zip(*ground_row)))
# 가로, 세로 버전으로 해보고 최솟값을 result에 저장
result = min(solution(ground_row), solution(ground_col))
print(result)
💡 Tip
2차원 배열에서 행과 열을 바꾸고 싶은 경우 map과 zip 함수를 이용해서 가로세로를 바꿀 수 있다.
# 행열 바꿔서 저장
ground_col = list(map(list, zip(*ground_row)))
728x90
반응형