728x90

function solution(info, query) {
    var answer = [];
    let count = 0;
    let number = 0;
    
    let infoObj = [];
    let queryObj = [];
    
    info.forEach(element => {
        const [lang, job, grade, food, score] = element.split(' ');
        infoObj.push({ lang, job, grade, food, score });        
    });
    
    query.forEach(element => {
      const [lang, job, grade, foodScore] = element.split(' and ');
        const [food, score] = foodScore.split(' ');
        queryObj.push({ lang, job, grade, food, score });
    });
       
     
    for(let i=0 ; i< queryObj.length ; i++)
    {
        for(let j=0 ; j< infoObj.length ; j++)
        {   
            if (parseInt(infoObj[j].score) >= parseInt(queryObj[i].score))
            {   
                    if(queryObj[i].lang == '-' )
                    { 
                        count += 1;                     
                    } 
                    if (queryObj[i].job == '-' ) 
                    {
                        count += 1;
                    }
                    if ( queryObj[i].grade == '-')
                    {
                        count += 1;
                    }
                    if ( queryObj[i].food == '-')
                    {
                        count += 1;
                    }
                    if (infoObj[j].lang == queryObj[i].lang)
                    {
                        count += 1;                    
                    }  
                    if (infoObj[j].job == queryObj[i].job)
                    {
                        count += 1;
                    }  
                    if (infoObj[j].grade == queryObj[i].grade)
                    {
                        count += 1;
                    }  
                    if (infoObj[j].food == queryObj[i].food) 
                    {
                        count += 1;
                    }
                     
                    if (count > 3){   
                        number += 1 ;  
                         count = 0;
                    }    
            }
            count = 0;
          }   
        answer.push(number);     
        number = 0;
    }
    return answer;   
}


===================================================================

function solution(info, query) {
    var answer = [];
    let count = 0;
    let number = 0;
    
    let infoMap = new Map();
    let queryObj = [];
    
    info.forEach(element => {
        const [lang, job, grade, food, score] = element.split(' ');
        if(!infoMap.has(lang)) infoMap.set(lang, new Map());
        if(!infoMap.get(lang).has(job)) infoMap.get(lang).set(job, new Map());
        if(!infoMap.get(lang).get(job).has(grade)) infoMap.get(lang).get(job).set(grade, new Map());
        if(!infoMap.get(lang).get(job).get(grade).has(food)) infoMap.get(lang).get(job).get(grade).set(food, []);
        infoMap.get(lang).get(job).get(grade).get(food).push(parseInt(score));
    });
    
    query.forEach(element => {
      const [lang, job, grade, foodScore] = element.split(' and ');
        const [food, score] = foodScore.split(' ');
        queryObj.push({ lang, job, grade, food, score });
    });
       
     
    for(let i=0 ; i< queryObj.length ; i++)
    {
        for(let lang of infoMap.keys()){
            if (lang !== queryObj[i].lang && queryObj[i].lang !== '-') continue;
            for(let job of infoMap.get(lang).keys()){
                if (job !== queryObj[i].job && queryObj[i].job !== '-') continue;
                for(let grade of infoMap.get(lang).get(job).keys()){
                    if (grade !== queryObj[i].grade && queryObj[i].grade !== '-') continue;
                    for(let food of infoMap.get(lang).get(job).get(grade).keys()){
                      if(food !== queryObj[i].food && queryObj[i].food !== '-') continue;
                   
                     const scores = infoMap.get(lang).get(job).get(grade).get(food);
                     if(!scores) continue;
                   number += scores.filter(score => score >= parseInt(queryObj[i].score)).length;
                    }
                        
                }
            }
        }
        answer.push(number);
        number = 0;
    }
    return answer;   
}

 

728x90

 

* 회사 직원분이 해보자고 해서, 어떻게든 해서 결과는 나왔는데.... 효율성이 제로 ㅜㅜ 

  다시 수정해서 어떻게든 효율성을 올려볼 예정임... (정식적으로 배우지 않은티가 너무 나는게 함정;;;)

function solution(info, query) {
    var answer = [];
    let count = 0;
    let number = 0;
    
    let infoObj = [];
    let queryObj = [];
     
    info.forEach((element, index) => {
        infoObj.push(element.split(' '));        
    })            

    query.forEach((element, index) =>{
        const list = element.split(' and ')
        const list2 = list[3].split(' ');
        list.pop();
        list.push(list2[0]);
        list.push(list2[1]);
        queryObj.push(list);   
    })      
       
     
    for(let i=0 ; i< queryObj.length ; i++)
    {
        for(let j=0 ; j< infoObj.length ; j++)
        {   
            if (parseInt(infoObj[j][4]) >= parseInt(queryObj[i][4]))
            {                              
                for(let k=0; k<4 ; k++){
                    if(queryObj[i][k] == '-')
                    { 
                        count += 1;                     
                    } else if (infoObj[j][k] == queryObj[i][k])
                        {
                            count += 1;                    
                        } 
                     
                    if (count > 3){   
                        number += 1 ;  
                         count = 0;
                    }                
                 }
                 count = 0;
            }
          }   
        answer.push(number);     
        number = 0;
    }
    return answer;   
}

+ Recent posts