코딩테스트/🧮 프로그래머스

🧮 [프로그래머스] 귤 고르기 (Java) - getOrDefault, Comparator

늦은산책 2023. 10. 17. 20:52
문제

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