[프로그래머스] level2 : 의상
1. 문제 설명
2. 문제 해석
2차원 배열로 들어오는 값을 key-value쌍으로 만들어주어야 한다. 문제에서 각 행은 [의상의 이름, 의상의 종류]로 이루어져있다고 했기 때문에 의상의 종류별로 의상을 묶어주어야 풀 수 있을 것 같았다.
1. input의 배열 길이 만큼 loop를 돌며 transformedInput형태의 오브젝트를 만들어준다.
2. 이제 옷의 종류별로 몇 개의 아이템이 있는지 알 수 있게 되었으니, 옷의 가능한 조합 갯수를 구해준다.
3. 그럼 아래와 같은 조합이 나온다는 것을 알 수 있다. 이걸 계산 식으로 나타내면 headgear.length * eyewear.length = 2 인 것을 알 수 있다. 하지만 이 input값을 받았을 때의 답은 2가 아닌 5다.
(같은 카테고리의 옷 끼리는 매치할 수 없으므로, 카테고리가 다른 것들 끼리 매치해준다)
4. 왜냐하면 꼭 아이템을 다른 카테고리의 아이템과 매치할 필요는 없고, 한 카테고리의 옷만 걸칠 수도 있기 때문이다.
5. 이것을 계산 식으로 만드려면, 각 카테고리의 length에 1을 더해주어야 한다.
headgear.length + 1에서 이 1은 headgear는 안 입고 eyewear만 입었을 때의 경우의 수를 하나 더 더해주는 것이다.
이렇게 다른 카테고리에도, 해당 카테고리의 옷을 입지 않고 다른 카테고리의 옷만 입었을 경우의 수를 1씩 더해준다.
(headgear.length + 1) * (eyewear.length + 1) = 6
그런데 정답인 5와 값이 다르다. 그 이유는 headgear를 안 입었을 때의 경우와 eyewear를 안 입었을 때의 경우를 모두 더해주었더니
아무것도 안 입었을 때의 경우의 수 까지 추가되었기 때문이다.
문제에서 하루 최소 한 개의 의상은 입는다. 라고 명시되어 있기 때문에
마지막에 아무것도 안 입었을 때의 경우의 수인 1을 빼준다.
3. 문제 풀이
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'알고리즘' 카테고리의 다른 글
[프로그래머스] : 나머지 한 점 (0) | 2023.08.08 |
---|---|
[프로그래머스] level3 : 베스트 앨범 (0) | 2023.06.25 |
[프로그래머스] level1 : 소수찾기 (생각보다 많이 헤맨 문제) (1) | 2022.12.29 |
재미로 하는 코테 공부 중간 점검 (0) | 2022.12.15 |
[프로그래머스] level2 : H-Index 구하기 (0) | 2022.12.11 |