문제
https://school.programmers.co.kr/learn/courses/30/lessons/138476
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 이해 & 풀이
해당 문제는 경화가 최대한 균일한 크기로 귤 박스를 채우려고 하는 것에 있다.
박스에 담기는 귤의 갯수는 k로써 나타나게 되고 배열에는 여러개의 귤의 크기를 담아두었다
그러면 결국 풀이는 간단해진다.
최대한 비슷한 크기로 박스를 채워라 그리고 그 박스 안에 귤의 종류는 몇 개인가?
갯수가 많은 것으로 분류를 해두어야한다.
그렇다면 map에 key, value를 통해 저장해두어야 한다.
key는 귤의 크기가 될 것이고
value에는 해당 크기의 귤의 갯수에 해당한다
그리고 가장 많은 것부터 제외해야 하기 때문에 map을 넣고 value값을 기준으로 내림차순으로 정렬해야한다.
그렇다면 그 key값으로 map에서 value값 만큼 k에서 빼면서 count(answer)를 늘려가면서 몇 개의 종류가 들어간건지 알수 있는 것이다.
주의할 점은 k가 0보다 같거나 작아지면 멈춰야 한다는 것이다
소스코드
map의 메소드 getOrDefault
getOrDefault(Object key, V DefaultValue)
- key : 값을 가져와야 하는 요소의 키이다
- deFaultValue : 지정된 키로 매핑된 값이 없는 경우 반환되어야 하는 기본값이다.
위에 코드를 예시로 들면 기본값은 0이고 뒤에 +1을 해주면서 해당 key값이 또다시 추가된다면 value값에 덮어쓰기가 진행된다.
즉, 기존의 key값을 사용하고 value값만 덮어쓰는 경우 사용하면 좋다.
getOrDefault를 사용하는 알고리즘 문제
https://school.programmers.co.kr/learn/courses/30/lessons/42576
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'코딩테스트 > 🧮 프로그래머스' 카테고리의 다른 글
🧮 [프로그래머스] 멀리 뛰기 (Java) - DP 문제 (0) | 2023.09.26 |
---|---|
🧮 [프로그래머스] N개의 최소 공배수 (Java) ft.유클리드 호재법 (0) | 2023.09.26 |
🧮 [프로그래머스] 이진 변환 반복하기 (JAVA) (0) | 2023.09.21 |
🧮 [프로그래머스] 폰켓몬 (JAVA) (0) | 2023.08.14 |
🧮 [프로그래머스] 푸드파이트 대회(JAVA) (0) | 2023.08.12 |