코딩테스트 #13 그리디 알고리즘 문제 풀어보기

banhogu·2023년 10월 16일
0

이번 문제는 그리디 알고리즘을 중점적으로 공부하고 풀어봤다.


문제

접근법 : 값을 input[i] (1원 10원...)으로 나눠서 몫이 0보다 크고 몫이 제일 작은값을 찾고 그 값이 몇원짜리인지 찾아서 값에 나눈 나머지 값을 두번째로 작은 몫으로 또 나눠서 갯수 올려가며 풀려고했다. 내가 생각해도 너무 복잡해보인다.

해결법 : 그냥 i를 제일 큰 값부터 시작해서 나눈 몫을 카운트하고 나머지 값을 또 그 다음 큰값으로 나눠가며 순서대로 내려와서 총 카운트를 찾는다.


문제

접근법 : 오름차순을 사용해서 총 합을 구한다. 근데 누적합 생각히 도저히 안났다.

해결법 : answer 라는 누적합 변수에 현재 덧셈값을 넣어서 누적합을 구한다


문제

접근법 : 도무지 감이 오지 않았다.
해결법 : -를 기준으로 한번에 묶어서 최대한 작은 값이 되도록 만들어준다.
(split를 문자하나하나, 띄어쓰기 기준, \n 기준으로만 나눠서 -로 나누는 접근을 하지 못한것닽다.) 그럼 이제 숫자와 +가 합쳐진 하나의 문자열을 어떻게 진짜 식으로 바꿔줄것인가를 생각하고 검색해봤는데, eval(수식)을 하면 자동으로 자바스크립트가 식으로 바꿔준다고 했는데 적용이 안돼서 +가 합쳐진 문자열을 다시 +기준으로 split하여 숫자로 바꿔주고 만들어진 새 배열을 reduce로 더하도록 했다. 그럼 식은 (더한값) - (더한값) - (더한값) 형식으로 만들어 지는데 i=0 인덱스가 0일땐 무조건 첫시작으로 더해야 하므로 결과 변수에 더해줬고 뒤에 나올땐 빼야 하므로 결과값에서 (더한값)을 빼주었다.


profile
@banhogu

0개의 댓글