프로그래머스 js 위장

이명진·2022년 6월 2일
0

코드카타

목록 보기
27/69

위장

해시 레벨 2 문제이다.
스파이들은 매번 옷을 바꿔입어야 한다.
배열로 옷의 종류와 옷에 대해서 알려주고 다르게 매치 할수 있는 경우의 수를 구하면된다.
같은 이름의 옷은 없고 의상은 하나씩 만 입을수도 있다.
바지를 안입는경우도...

해시 문제라고 해서 객체에 저장해놓고 풀어야 겠다 라는 생각을 했다.
경우의 수도 엄청 많은데 어떻게 다 객체에 저장을 할까 고민하게 되었고
한두시간 고민하다가 해시에대해서 정확히 알고 풀어보자고 생각하여서 해시에대해
다시 쭉 훑어본다음에 힌트를 첮아봤다.

해시.. 공부해야 할게 정말 방대하다. 아직 멀었다..

해설을 찾아봤는데 거의 수학문제이다.. 경우의 수를 구하는 걸로 문제를 풀었다.
레벨2를 요즘 풀고 있는데 레벨2에 들어서면서 수학 공식에 대해 지식이 많이 필요함을 느끼게 되었다.

이번 문제도 사실 해시로 푸는게 아니고 수학문제로 푸는 느낌이 들었다.
직접적으로 코드는 보지 않고 풀이 해설을 보고 어떻게 접근해야 할지 힌트를 얻은다음에 문제를 풀게 되었다. 아래는 내가 작성한 로직이다. \

내풀이

function solution(clothes) {
  let item ={}
  let answer = 1;
  clothes.map(x=>{
    if(item[x[1]]){
      item[x[1]].push(x[0])
    }else{
       item[x[1]]=[x[0]]
    }
  })
  
 for(let i in item){
   let clotheCase = item[i].length+1
   answer = clotheCase*answer
   
 }
  
  return answer-1
    
}

문제 해설

각각의 아이템의 종류별로 빈객체의 키값으로 넣어준다.
그리고 각 종류별로 옷들을 넣어주는데 옷의 개수만 카운트 해준다.

안입는 경우도 있기 때문에

옷개수+안입은 경우의수 옷개수+안입은 경우의수 - 전부 안입는 경우의 수 이다.
안입은 경우의수 , 전부 안입는 경우의 수는 1 이기 때문에 결국
옷개수+1
옷개수+1 - 1 이다.

공식이 필요한 문제 같다.

해시라고 생각해서 다양한 경우의 수를 키값으로 넣어놓고 키를 색인 해서
개수를 찾는 이런 문제인줄 알았는데 수학 공식이 필요한 문제 같다.
해시가 이렇게 푸는 문제인지 잘모르겠다.
해시에 대해 잘 모르겠어서 레벨1 해시 문제를 다시 풀었다.

profile
프론트엔드 개발자 초보에서 고수까지!

0개의 댓글