본문 바로가기
코딩테스트(알고리즘)/프로그래머스

[프로그래머스] 시소짝꿍 (Javascript)

by Cafe Mocha 2023. 2. 12.

https://school.programmers.co.kr/learn/courses/30/lessons/152996

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


알고리즘 : 자료구조, 시간복잡도

 

처음에 시간복잡도를 생각하지 못해서 계속 시간초과가 발생했다.

항상 array를 사용해서 문제를 많이 풀고 있는데 객체를 사용해서 시간복잡도를 줄일 수 있었다.

경우의 수 계산 중 괄호의 위치가 계속 틀려서... 3번의 도전만에 풀었다 ㅜㅜ

 

function solution(weights) {
    
   let cal = [3/2,2,4/3];

  let store ={};
  let ans =0;

  for(let i=0;i<weights.length;i++){
    if(!store[weights[i]]) store[weights[i]]=1;
    else store[weights[i]]++;
  }
    
    
  for(let num in store){

    if(store[num]>=1) ans+= store[num]*(store[num]-1)/2;


    for(let j=0;j<cal.length;j++){
      let temp = +num*cal[j];
      if(store[temp]!==undefined) {
        ans+=store[temp]*store[num];
      }
    }
  }



    return ans;
}