https://school.programmers.co.kr/learn/courses/30/lessons/42578
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
겹치지 않는 것들을 고를 수 있는 조합 문제이다.
문제를 세분화하자면
가진 옷이 있고 같은 부위라면 최대 1개만, 하나라도 다르면 다른 옷이고, 최소 하나 입음
해쉬를 사용해서 풀자 !
중복은 안됨 순서가 중요하지 않음
,기준으로 나눠서 저장 ? 종류가 있다면 일단 첨 넣을 때 1이고 getOrDefault로 계속 숫자 추가 ?
순열 조합 이용해서 마지막에 다 선택된 경우까지 계산되니까 -1 해주면 되겠다
사실 예전에 위장이라는 문제를 풀어봐서 hash로 접근하는 방법은 기억이 났다.
1. map에 저장
[["yellow_hat", "headgear"], ["blue_sunglasses", "eyewear"], ["green_turban", "headgear"]]
예제로 이렇게 주어지면 map에는
종류 별로 넣어준다.
즉 headgear=2, eyewear=1
이런 식으로 맵에 key,value를 넣는다.
2. 실패요인
이렇게 넣게되면 2개 1개만 담기게 되는데 이럴 경우 안쓸 경우를 생각하지 못하게 된다.
사실 상 headgear=3, eyewear=2 을 넣어야 한다.
예시 headgear(노란모자,초록터번, 아무것도 안 쓴 상태)
(Map에 계속 1씩 추가하게 못하려나.. 이 생각하느라 고민좀 했다)
3. 정답 참고
잘 안풀려서 결국 다시 찾아보니
넣을 땐 똑같이 넣고 계산 방식에서 +1로 아무 것도 안한 경우를 더해 곱해주게 되고
그럴 경우 마지막에 answer -1을 해주면 정답이 된다.
(-1은 아무 것도 안 쓰거나 입은 상태끼리 다 모여서 바바리맨이 되는 경우를 빼줘야 하기 때문!)
4. 최종 결과 & 느낀 점
예전에 풀 땐 잘 풀렸는데..
다시 예전에 푼 문제들도 다시 보자 !
(사실 comi 메서드도 다시 꺼내옴 ㅠㅠ..)
다시 가끔씩 써야게따
나중에 이 메서드로 다시 풀어봐야지..
'알고리즘' 카테고리의 다른 글
99클럽 코테 스터디 4일차 TIL 올바른 괄호 feat(queue.add vs offer) (0) | 2024.05.23 |
---|---|
99클럽 코테 스터디 3일차 TIL 기능개발 (0) | 2024.05.22 |
99클럽 코테 스터디 1일차 TIL 전화번호 목록 (0) | 2024.05.20 |
백준 9375 패션왕 신해빈 (0) | 2024.01.24 |
백준 1157 단어공부 (0) | 2024.01.23 |