본문 바로가기
Algorithm/수학

[Java] 백준 9375 - 패션왕 신해빈

by brother_stone 2023. 4. 12.

https://www.acmicpc.net/problem/9375

 

9375번: 패션왕 신해빈

첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로   (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다.

www.acmicpc.net

시나리오

케이스 하나에 n개의 의상의 이름, 의상의 종류가 주어진다. 같은 종류의 의상은 하나만 입을 수 있는데 이때, 알몸이 아닌 상태로 의상을 입을 수 있는 경우를 구하라고 한다. 

따라서 의상 조합의 모든 경우의 수를 구하되, 하나의 옷만 입어도 알몸이 아닌 것으로 간주되기 때문에 종류별 의상 개수에 + 1 하여 입지 않는 경우도 고려하고 최종 결괏값에서 -1 하여 알몸인 경우를 빼야 한다.

 

즉, \(sum(\)옷 종류 * 종류별 의상 개수\()-1\) 이 정답이 되겠다.

 

입력으로 주어진 의상 종류와 의상 이름을 적절하게 저장하기 위해 Map<String, List<String>> 타입을 사용했다.

그리고 의상 종류 key에 대한 List value가 이미 있는 경우와 없는 경우를 분기하여 있을 때는 해당 value에 add 하고 없을 때는 새로운 List를 생성해 value로 집어넣는 과정을 거쳤다.

 

이때, Map인터페이스의 인스턴스 메서드 containsKey(Object key)를 사용했는데, 이 메서드를 몰랐을 때는 Map의 keySet() 메서드로 key값들을 리턴 받아 일일이 반복문을 돌려서 구했지만 IDE의 추천으로 더 간편한 메서드가 있다는 걸 알았다. 

 

아래 포스팅에 정리하도록 하자.

 

 

 

2023.03.25 - [Algorithm] - Java 알고리즘 풀이 기능 구현, 메서드 호출 모음

 

Java 알고리즘 풀이 기능 구현, 메서드 호출 모음

지금까지 알고리즘 문제를 파이썬으로 풀다가 자바로 풀다보니 아이디어는 금방 떠올라도 코드로 구현하는 게 익숙하지 않아서 너무 오랜 시간이 걸리는 문제점이 있다. 그래서 공통적으로 사

brotherstone.tistory.com