728x90

using System;


public class Solution {
    public int solution(int[] array) {
        int answer = 0;
        int maxArr = 0;
        
        // 배열 안에서 가장 큰 수 찾기
        for(int i = 0 ; i < array.Length ; i++){
            if(array[i] > maxArr){
                maxArr = array[i];
            }
        }
        
        int[] count = new int[maxArr + 1];
        int max = 0;
        int numCheck = 0;
        
        // 카운트 배열에 array 가 속한 숫자가 있으면 카운트 ++
        for(int i = 0 ;  i < array.Length ; i++){
            count[array[i]]++;
        }
        
        // 각 숫자마다 카운트를 비교 후 가장 높은 카운트를 가진 수를 max에 입력
        for(int i = 0 ; i < count.Length; i++){
            if(count[i] > max){
                max = count[i];
                answer = i;
            }
        }
        
        // 가장 높은 카운트를 가진 수가 여러개 있는 경우 numCheck 값을 ++ 하여
        for(int i = 0 ; i < count.Length ; i++){
            if(count[i] == max){
                numCheck++;
            }
        }
        // numCheck 값이 1보다 크면 동일한 높은 카운트를 가진 수가 있다는 뜻이므로, -1 을 출력
        if(numCheck > 1){
            answer = -1;
        }
        
        
        return answer;
    }
}

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

+ Recent posts