코딩테스트/프로그래머스
Budget (c++)
shin0112
2024. 1. 24. 01:05
과정
1. 모든 경우의 수를 구해서 가장 많이 물건을 살 수 있는 경우 고르기? → O(n!)
2. 벡터를 정렬해서 작은 숫자부터 확인해보기
- 정렬 알고리즘 - algorithm의 sort → O(nlogn)
- 앞에서부터 예산 확인하기 - 최악의 경우 전부 확인 → O(n)
sol
1. 정렬 알고리즘으로 d 정렬하기 → O(nlogn)
2. for문으로 budget에서 작은 가격부터 감산하고, 할 수 있으면 answer++
3. 감산한 값이 0보다 작으면 더 이상 예산을 사용할 수 없으므로 값 return
고민
- 처음에는 budget에서 d[i]를 뺄 생각을 못해서 sum이라는 새로운 변수를 만들어서 사용했다.
- int 변수 1개라서 4 bytes의 메모리라도 어떻게 보면 낭비!
- 메모리를 줄일 수 있는 방법이 있는지 풀기 전에 한 번 생각해보는 습관을 들여보자!
shin0112/programmers_cpp: programmers' coding test solutions (github.com)
출처 : 프로그래머스 코딩 테스트 연습 - Budget
https://school.programmers.co.kr/learn/courses/30/lessons/12982