https://school.programmers.co.kr/learn/courses/30/lessons/42885
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
그리디가 어떻게 풀어야할지 감은 오는데 막상 코딩으로 구현하려고 하면 벽에 막히는 것 같다
대충 설명하자면 people의 입력값 [70, 50, 80, 50]을 내림차순으로 정렬한다 그리고 반복문을 통해서 변수 sum에다 people[light] + people[heavy] 값을 넣는데 이때 sum에 값이 limit보다 크면 heavy만 증가 시키고 그렇지 않으면
light은 감소시켜준다
즉 반복문이 처음 돌 때 sum에는 80 + 50 = 130을 넣는다 130은 limit 보다 크기 때문에 heavy만 증가시킨다 두번째 돌때는 70 + 50인데 이때도 120은 limit보다 크기 때문에 heavy만 증가시킨다 마지막으로 50 + 50은 limit보다 크지 않기 때문에 heavy를 증가 시키고 light도 감소시킨다 이때 heavy는 3 light은 2이기 때문에 반복문은 종료된다
이렇게 반복하는데 이때 반복문이 돌 때마다 boatCount의 값을 증가 시킨다 그리고 마지막에 heavy와 light의 값이 같아지면 boatCount를 증가시키고 return 한다
하지만 위에 입력 예제에서는 heavy와 light의 값이 같아지지 않고 heavy가 light값 보다 커지기 때문에 boatCount 증가는 실행되지 않는다
'알고리즘 문제 풀이' 카테고리의 다른 글
백준 2108 - 통계학 (0) | 2022.10.31 |
---|---|
프로그래머스[LEVEL2] - 뉴스 클러스터링(2018 카카오 블라인드 코딩테스트) (0) | 2022.10.21 |
백준 1874 - 스택 수열 (0) | 2022.10.01 |
백준 1931 - 회의실 배정 (0) | 2022.09.28 |
백준 2810 - 컵홀더 (0) | 2022.09.24 |