☑️ 문제: 의상
https://school.programmers.co.kr/learn/courses/30/lessons/42578
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
☑️ 핵심
의상의 종류가 몇 개고, 각 의상의 종류가 가지고 있는 의상의 개수를 구하는 게 포인트
answer = (종류1의 의상 개수 + 1(안 입는 경우)) * ... * (종류n의 의상 개수 + 1) - 1(아무 것도 안 입는 경우)
☑️ 풀이 과정 (주석과 코드)
import java.util.Map;
import java.util.HashMap;
import java.util.Collection;
class Solution {
public int solution(String[][] clothes) {
// 의상의 종류가 몇 개고,
// 각 의상의 종류가 가지고 있는 의상의 개수를 구하는 게 포인트.
Map<String, Integer> map = new HashMap<>();
for (int i = 0; i < clothes.length; i++) {
String category = clothes[i][1];
if (!map.containsKey(category)) {
map.put(category, 1);
} else {
map.put(category, map.get(category) + 1);
}
}
// (종류1의 의상 개수 + 1(안 입는 경우)) * ... * (종류n의 의상 개수 + 1) - 1(아무 것도 안 입는 경우)
int answer = 0;
Collection<Integer> values = map.values();
for (Integer value : values) {
if (answer == 0) {
answer = value + 1;
} else {
answer *= (value + 1);
}
}
return answer - 1;
}
}
아쉬운점: HashMap이 익숙하지 않아서 코드가 깔끔하지 않은 것 같다.
☑️ 다른 사람 풀이 참고
stream을 사용하는 방법:
stream, collect, values를 적절하게 사용해서 line 5개로 해결하셨다.
☑️ 복습
HashMap에서 사용해보았던 메서드
- Map.containsKey(key)
- Map.put(key, value)
- Map.get(key)
- Collection<Integer> values = map.values(); // 모든 value 얻기
- Map.Entry<String, Integer> entry : map.entrySet() // 모든 key, value 얻기
map value에 ++a 이렇게 쓰니까 컴파일 에러 나더라.
'TIL (Today I Learned)' 카테고리의 다른 글
99클럽 코테 스터디 8일차 TIL + 오늘의 학습 키워드 (0) | 2024.07.29 |
---|---|
99클럽 코테 스터디 7일차 TIL + 오늘의 학습 키워드 (0) | 2024.07.29 |
99클럽 코테 스터디 5일차 TIL + 오늘의 학습 키워드 (0) | 2024.07.26 |
99클럽 코테 스터디 4일차 TIL + 오늘의 학습 키워드 (0) | 2024.07.25 |
99클럽 코테 스터디 3일차 TIL + 오늘의 학습 키워드 (0) | 2024.07.25 |