728x90
반응형

68. 2차원으로 만들기

68-1. 첫번째 풀이

const solution = (num_list, n) => {
    let answer = [[]];
    let num = 0;
    
    for(let i = 0; i < num_list.length / n; i++) {
        answer[i] = [];
        
        for(let j = 0; j < n; j++) {
            answer[i][j] = num_list[num];
            num++;
        };
    };
    
    return answer;
}

68-2. 두번째 풀이

const solution = (num_list, n) => {
    let answer = [[]];
    
    answer = Array(num_list.length / n).fill([]).map(() => num_list.splice(0, n))

    return answer;
}

==> '문제를 해결하자!' 는 마인드로 풀었다. 하지만 결과는 이중 for문.. 왠만하면 안쓰려고 한다.  구글링을 열심히 한 결과! 바꿀 수 있었다. 하나 배웠다!!

 

69. 7의 개수

const solution = (array) => {
    let answer = 0;
    const regExp = new RegExp('[^7]', 'gi');

    answer = array.join('').replace(regExp, '').length;
    
    return answer;
}

 

70. 이진수 더하기

const solution = (bin1, bin2) => {
    let answer = '';
    
    answer = (parseInt(bin1,2) + parseInt(bin2,2)).toString(2);
    
    return answer;
}

 

728x90
반응형
728x90
반응형

58. 369게임

const solution = (order) => {
    let answer = 0;
    let tmpArr = (order + '');
    let removeZero = [...(tmpArr.replaceAll('0', '') + '')];
    
    removeZero.forEach(el => {
        if(el % 3 === 0) {
            answer++;
        }
    })
    
    return answer;
}

 

59. 중복된 문자 제거

const solution = (my_string) => {
    let answer = '';
    let tmpArr = [...my_string];
    
    answer = [... Set(tmpArr)].join('');
    
    return answer;
}

 

60. 팩토리얼

const solution = (n) => {
    let answer = 1;
    
    for(let i = 1; i <= n; i++) {
        answer *= i;
        
        if(answer === n){
            return i;
        }
        
        if(answer > n){
            return i - 1;
        }  
    }
}

 

61. 모스부호(1)

const solution = (letter) => {
    let answer = '';
    let tmpArr = [];

    let morse = { 
    '.-':'a','-...':'b','-.-.':'c','-..':'d','.':'e','..-.':'f',
    '--.':'g','....':'h','..':'i','.---':'j','-.-':'k','.-..':'l',
    '--':'m','-.':'n','---':'o','.--.':'p','--.-':'q','.-.':'r',
    '...':'s','-':'t','..-':'u','...-':'v','.--':'w','-..-':'x',
    '-.--':'y','--..':'z'
    }
    
    letter.split(' ').forEach(el => {
        tmpArr.push(morse[el]);
    })
    
    answer = tmpArr.join('');
    
    return answer;
}

 

62. A로 B만들기

const solution = (before, after) => {
    let answer = 0;
    
    answer = [...before].sort().toString() === [...after].sort().toString() ? 1 : 0;
    
    return answer;
}

 

63. 합성수 만들기

const solution = (n) => {
    let answer = 0;
    
    for(let i = 2; i <= n; i++) {
        if(isCompoNum(i)) {
            answer++;
        }
    }
    return answer;
}

/* 합성수 판별 함수 */
function isCompoNum(num) {
    let count = 0;
    for(let i = 1; i <= Math.sqrt(num); i++) {
        if(num % i === 0) {
            count++;
        }
    }
    
    if(count > 1) {
        return true;
    }
}

 

64. k의 개수

const solution = (i, j, k) => {
    let answer = 0;
    let tmpArr = [];
    let tmpString;
    let regExp = new RegExp(`[^${k}]`, 'gi');
    
    for(let a = i; a <= j; a++) {
        tmpArr.push(a);
    }
    
    answer = tmpArr.join('').replace(regExp,'').length;
    
    return answer;
}

/* 더 좋은 풀이방법을 모색해봐야겠다.  */

 

65. 가까운 수

const solution = (array, n) => {
    let answer = 0;
    let tmpArr = [];
    let sortArr = array.sort((a, b) => a - b);
    
    for(let i = 0; i < sortArr.length; i++) {
        tmpArr.push(Math.abs(sortArr[i] - n));
    }

    let minNum = Math.min(...tmpArr);
    answer = sortArr[tmpArr.indexOf(minNum)];

    return answer;
}

 

66. 진료순서 정하기

 

66-1. 첫번째 풀이

const solution = (emergency) => {
    let answer = [];
    let tmpArr = JSON.parse(JSON.stringify(emergency)).sort((a, b) => b - a);
    let tmpObj = {};

    for(let key in tmpArr) {
        tmpObj[key] = tmpArr[key];
    } 
    
    for(let i = 0; i < emergency.length; i++) {
        for(let j = 0; j < emergency.length; j++) {
            if(emergency[i] === tmpObj[j]) {
                answer.push(j + 1)
            }
        }
    }

    return answer;
}

66-2. 두번째 풀이

const solution = (emergency) => {
    let answer = [];
    let sortEmergency = [...emergency].sort((a, b)=> b - a);
    
    answer = emergency.map(el => {
        return sortEmergency.indexOf(el) + 1;
    });

    return answer;
}

==> 처음 풀이 당시 마구잡이로 풀었는데, 블로그에 올리려고 보니 이중for문에 심지어 if문까지.. 과거의 내 생각이 너무 바보같아 바꿨다..

 

67. 한 번만 등장한 문자

const solution = (s) => {
    let answer = '';
    let tmpArr = [...s];
    let answerArr = [];
    
    for(let i = 0; i < s.length; i++) {
        if(s.indexOf(s[i]) === s.lastIndexOf(s[i])) {
            answerArr.push(s[i]);
        };
    };
    
    answer = answerArr.sort().join('');
    
    return answer;
}
728x90
반응형
728x90
반응형

45. 약수구하기

const solution = (n) => {
    let answer = [];
    
     for(let i = 1; i <= n; i++) {
         if(n % i === 0) {
             answer.push(i)
         }
     }
    
    return answer;
}

 

46. 주사위의 개수

const solution = (box, n) => {
    let answer = 1;
    
    box.forEach(el => {
        answer *= ~~(el / n);
        
    })
    
    return answer;
}

 

47. 가장 큰 수 찾기

const solution = (array) => {
    let answer = [];
    
    answer.push(Math.max(...array));
    answer.push(array.indexOf(answer[0]));
    
    return answer;
}

 

48.인덱스 바꾸기

const solution = (my_string, num1, num2) => {
    let answer = '';
    let tmpArr = [...my_string];
    
    [tmpArr[num1], tmpArr[num2]] = [tmpArr[num2], tmpArr[num1]];
    
    answer = tmpArr.join('');
    
    return answer;
}

 

49. 암호해독

const solution = (cipher, code) => {
    let answer = [];
    
    for(let i = code - 1; i < cipher.length; i += code) {
        answer.push(cipher[i]);
    }
    
    return answer.join('');
}

 

50. 배열 회전시키기

const solution = (numbers, direction) => {
    let answer = numbers;   
    
    direction === 'right' 
        ? answer.unshift(answer.pop())
        : answer.push(answer.shift());
    
    return answer;
}

 

51. 짝수 홀수 개수

const solution = (num_list) => {
    let answer = [];
    let tmp = [];
    let even = 0;
    let odd = 0;
    
    tmp = num_list.reduce((acc, cur) => {
        acc.push(cur % 2 ? 'odd' : 'even');
        return acc;
    },[])
        .filter(item => {
        item === 'even' ? even++ : odd++
    });
    
    answer.push(even, odd);
    
    return answer;
}

 

52. 숫자 찾기

const solution = (num, k) => {
    let answer = -1;
    
    if((num + '').includes(k + '')) {
        answer = (num + '').indexOf(k + '') + 1
    }
    
    return answer;
}

 

53. 외계행성의 나이

const solution = (age) => {
    let answer = '';
    const AGE_CONVERTER = {
        0: 'a', 1: 'b', 2: 'c',
        3: 'd', 4: 'e', 5: 'f',
        6: 'g', 7: 'h', 8: 'i',
        9: 'j',
    }
    
    answer = [...(age + '')].map(el => {
        return AGE_CONVERTER[Number(el)]
    })
    
    return answer.join('');
}

 

54. 직각삼각형 출력

const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let input = [];

rl.on('line', (line) => {
    input = line.split(' ');
}).on('close', () => {
    
    const num = Number(input[0]);
    let star = ''
    
    for(let i = 0 ; i < num; i++) {
        for(let j = 0 ; j <= i; j++) {
            star+='*'
        }
        star+='\n'
    }
    console.log(star);
});

 

55. 피자 나눠 먹기(2)

const solution = (n) => {
    let answer = 1;
    let pizza = 6;
    
    while(pizza % n !== 0) {
        pizza += 6
    }
    answer = pizza / 6;
    
    return answer;
}

 

56. 최댓값 만들기 (2)

const solution = (numbers) => {
    let answer = 0;
    
    let sortArr = numbers.sort((a, b) => b - a);
    let tmpNum1 = sortArr[0] * sortArr[1];
    let tmpNum2 = sortArr[numbers.length - 1] * sortArr[numbers.length - 2];
    
    if(tmpNum1 > tmpNum2) {
        return tmpNum1;
    }
    
    return tmpNum2;
}

 

57. 문자열 정렬하기(2)

const solution = (my_string) => {
    let answer = '';
    let tmpString = my_string.toLowerCase();
    
    answer = tmpString.split('').sort().join('')
    
    return answer;
}

 

 

728x90
반응형
728x90
반응형

31. 배열의 유사도

const solution = (s1, s2) => {
    let answer = 0;
    
    answer = s1.filter((el) => { 
        return s2.includes(el)
    }); 

    return answer.length;
};

 

32. 제곱수 판별하기

const solution = (n) => {
    let answer = 0;
    let tmpSqrt = Math.sqrt(n);
    
    answer = Number.isInteger(tmpSqrt) ? 1 : 2;
    
    return answer;
}

 

33. 순서쌍의 개수

const solution = (n) => {
    let answer = 0;
    let tmpArr = [];
    
    for(let i = 1; i <= n; i++){
        if(n % i === 0){
            tmpArr.push(i);
        }
    }
    
    answer = tmpArr.length;
    
    return answer;
}

 

34. 자릿수 더하기

const solution = (n) => {
    let answer = 0;
    let tmpNumArr = [...(n.toString())];
    
    tmpNumArr.forEach(el => {
        answer += Number(el);
    });
    
    return answer;
};

 

35. 짝수는 싫어요

const solution = (n) => {
    let answer = [];
    
    for(let i = 1; i <= n; i++){
        if(i % 2 !== 0){
            answer.push(i);
        }
    }
    
    return answer;
}

 

36. 세균 증식

const solution = (n, t) => {
    if(t === 0) {
        return n;
    }
    
    let answer = 2 * n;
    
    return solution(answer, t - 1);
}

 

37. 숨어있는 숫자의 덧셈(1)

const solution = (my_string) => {
    let answer = 0;
    let regNum = my_string.replace(/[a-z,A-Z]/g, '');
     
    [...regNum].forEach(el =>{
        answer += Number(el)
    })
    
    return answer;
}

 

38. 중앙값 구하기

const solution = (array) => {
    let answer = 0;
    let tmpArr = array.sort((a, b) => {
        return a - b;
    })
    
    answer = array[~~(tmpArr.length / 2)]
    
    return answer;
}

 

39. 문자열 정렬하기 (1)

const solution = (my_string) => {
    let answer = [];
    let regNum = my_string.replace(/[a-z]/g, '');
    
    [...regNum].sort((a, b) => a - b)
        .forEach(el => {
        answer.push(Number(el))
    })
    
    return answer;
}

 

40. 문자열 안에 문자열

const solution = (str1, str2) => {
    let answer = str1.includes(str2) ? 1 : 2;
    
    return answer;
}

 

41. n의 배수 고르기

const solution = (n, numlist) => {
    let answer = [];
    
    numlist.map(item => {
        if(item % n === 0) {
            return answer.push(item);
        }
    })
    
    return answer;
}

 

42. 가위 바위 보

const solution = (rsp) => {
    let answer = '';
    let tmpArr = [...rsp];
    let tmpObj ={
        2: '0',
        0: '5',
        5: '2',
    }

    answer = tmpArr.map(el => {
        return tmpObj[el]
    }).join('')
    
    return answer;
}

 

43. 개미 군단

const solution = (hp) => {
    let answer = 0;
    
    let gAnt = ~~(hp / 5);
    let sAnt = ~~((hp % 5) / 3);
    let wAnt = hp - (gAnt * 5 + sAnt * 3);
    
    answer = gAnt + sAnt + wAnt;
    
    return answer;
}

 

44. 대문자와 소문자

const solution = (my_string) => {
    let answer = '';
    let tmpArr = [...my_string].map(item => {
        return item.charCodeAt();
    })

    answer = tmpArr.map(item => {
        return (64 < item && item < 91) 
            ? String.fromCodePoint(item).toLowerCase() 
            : String.fromCodePoint(item).toUpperCase(); 
    }).join('')
    
    return answer;
}

 

 

728x90
반응형

+ Recent posts