카테캠 작년 문제 풀이

농담곰·2026년 3월 25일
n = int(input())
arr = list(map(int, input().split()))

def watergun(arr,n):
    mn = arr[0]
    count = 0
    for i in range(n):
        if arr[i] < mn :
            mn = arr[i] 
    for i in range(n) :
        while arr[i] > mn:
            arr[i] -= 1
            count += 1

    return(count)
   
print(watergun(arr, n))

문제를 보고 생각한 로직 :

  1. 한 번 탐색하면서 최솟값 찾기
  2. 다시 탐색하면서 최솟값 보다 작으면 같아질때까지 -1한 뒤 그 횟수 기록

풀이 :

최솟값 : mn
물총을 쏜 횟수 : count

  1. for문을 통해 배열을 처음부터 끝까지 확인하며 mn의 값을 갱신
  2. 다시 배열을 탐색하며 현재 값이 mn보다 크다면 -1하고 count의 값은 +1 실행
  3. 현재 값이 mn과 같아질때까지 반복
  4. 출력

사용 알고리즘 :

Greedy 알고리즘

모든 흙기둥의 높이를 같게 만들기 위해 최종 높이를 현재 기둥들 중 최소 높이로 정하는 것이 최적이므로, 그리디 알고리즘으로 분류할 수 있다
-> 가장 유리한 선택(최소 높이에 맞추기)

이건 모르겠어서 ai 사용함
알고리즘 공부 해야 할 듯

결과

의도한 결과대로 작동하는 것을 확인

profile
둥글게살자

0개의 댓글