1208. [S/W 문제해결 기본] 1일차 - Flatten

2023. 3. 5. 22:00·Algorithm/SW Expert Academy Review

D3

Problem

SW Expert Academy Flatten


Solution

1. 최댓값과 최솟값의 차이를 최소로 만드는 것을 목표로 하고 시작한다.
2. 최댓값과 최솟값이 같아지면 더 이상 옮길 필요가 없다.
3. 최댓값에서 최솟값으로 하나씩 옮기면 언젠가 원하는 곳에 도달한다.

 


Code

# 최댓값과 최솟값 찾기
def max_height(arr):
    max_h = min_h = arr[0]
 
    for i in range(len(arr)):
        if arr[max_h] < arr[i]:
            max_h = i
        if arr[min_h] > arr[i]:
            min_h = i
    return [max_h, min_h]
 
 
for test_case in range(1, 11):
    dump = int(input())
    box_list = list(map(int, input().split()))
    dump_cnt = 0
 
    while True:
    	# 만약 차이가 1보다 크면 최소에서 최대로 한 칸 옮기기
        if box_list[max_height(box_list)[0]] - box_list[max_height(box_list)[1]] > 1:
            box_list[max_height(box_list)[0]] -= 1
            box_list[max_height(box_list)[1]] += 1
            # 카운트
            dump_cnt += 1
            # 카운트가 주어진 횟수가 되면 멈춤
            if dump_cnt == dump:
                break
        else: # 같아지면 멈춤
            break
    print(f'#{test_case} {box_list[max_height(box_list)[0]] - box_list[max_height(box_list)[1]]}')

★ 개선사항

최선의 수가 1칸차이라면, 주어진 횟수를 마칠 때까지 같은 작업을 반복한다. 그럼 필요없는 작업을 반복하기에 
비효율적이다.
이를 효율적으로 바꿀 순 없을까?

<부족한 부분은 댓글로 남겨주시면 저에게 힘이됩니다!>

<그림 출처: SWEA Flatten>

반응형

'Algorithm > SW Expert Academy Review' 카테고리의 다른 글

16268. 풍선팡2  (2) 2023.03.05
9490. 풍선팡  (2) 2023.03.05
4831. [파이썬 S/W 문제해결 기본] 1일차 - 전기버스  (0) 2023.03.05
16180. 4834. [파이썬 S/W 문제해결 기본] 1일차 - 숫자 카드  (0) 2023.03.05
1206. [S/W 문제해결 기본] 1일차 - View  (0) 2023.03.05
'Algorithm/SW Expert Academy Review' 카테고리의 다른 글
  • 16268. 풍선팡2
  • 9490. 풍선팡
  • 4831. [파이썬 S/W 문제해결 기본] 1일차 - 전기버스
  • 16180. 4834. [파이썬 S/W 문제해결 기본] 1일차 - 숫자 카드
devSeongKu
devSeongKu
#FE_개발일지 #일상 #알고리즘
    • 분류 전체보기 (60)
      • Algorithm (41)
        • 개념 (8)
        • SW Expert Academy Review (22)
        • BaekJoon Review (11)
      • WEB (12)
        • HTML (5)
        • CSS (2)
        • JavaScript (1)
        • Django (4)
      • CS (3)
        • Git (2)
      • PROJECT (2)
        • 에러핸들링 (2)
      • 기타 (2)
  • 반응형
  • devSeongKu
    From The Present
    devSeongKu
  • 전체
    오늘
    어제
  • 링크

    • Github
  • 인기 글

  • 태그

    html
    SWEA
    코드잇스프린트
    Python
    스프린트프론트엔드8기
    Algorithm
    SW Expert Academy
    알고리즘
    취업까지달린다
    Baekjoon
  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
devSeongKu
1208. [S/W 문제해결 기본] 1일차 - Flatten
상단으로

티스토리툴바