728x90

function solution(today, terms, privacies) {
    var answer = [];
    const contract = (terms.map(str => str.match(/\d+/)[0]));
    const todayDate = '2020.01.01';

    let termsMap = new Map();   
    for (let str of terms) {
      let [key, value] = str.split(' ');
      termsMap.set(key, value);
         //console.log(termsMap.get(key));
    }    
  
  const [year, month, day] = today.split(".").map(Number);         
  const todayCount =  ((year-2000) *12*28) + ((month-1)*28) + (day-1);
    // 6720
    
    
 const privaciesMap1 = privacies.map((map, idx) => [idx+1, ...map.split(' ')]);
//console.log(privaciesMap1);
        
for (let i = 0; i < privaciesMap1.length ; i++){
    let value = privaciesMap1[i][2];
   console.log(termsMap.get(value));
     let [year, month, day] = privaciesMap1[i][1].split(".").map(Number);            let diffCount =  ((year-2000) *12*28) + ((month-1)*28) + (day-1); 
    
    
    if(todayCount >= (diffCount+(termsMap.get(value)*28))){
        answer.push(privaciesMap1[i][0]);
    }
}
   
    return answer;
}

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;   
}

728x90

1. index.html

 

2. app.js

* const button ~ -> class name이 "btn" 인 모든 요소들을 button에 저장

* const value ~ -> id 값이 'value' 인 요소를 value에 저장

* button.addEventListener -> 버튼들에 이벤트를 생성

* const styles = e.currentTarget.classList --> e 는 현재 이벤트가 발생하는 요소, currentTarget 이벤트가 발생한 타겟(button), classList -> 타겟(button) 들의 class list (decrease, increase, reset)

* 첫번째 if문 -> 누르는 버튼에 따른 count 를 +, - , reset 처리

* 두번째 if문 -> count 값이 0이상이면 녹색, 0이하면 빨간색, 0이면 검은색으로 지정

* value.innterHTML  ~ --> count 값을 출력

>> 아래처럼 나오려면 styles.css 파일이 필요

+ Recent posts