プログラマー|2018 KAKAO[第一]珂泰JS


難易度:Level.1
言語:Javascript
出題履歴:2018 KAKAO BLIND RECRUITMENT

フルプールコード 👈🏻 クリックしてGithubに移動


❓ Question 1


秘密の地図
  • 秘密地図を解読し、「#」とスペースからなる文字列
  • を出力する

    📝 My Solution 1

    function solution(n, arr1, arr2) {
        const newArr = [];
            for (let i = 0; i<n; i++) {
                let length = 0
                let mix = (arr1[i] | arr2[i])
                let data = ''
    各地図配列では、壁があるかどうかを判断するために、
    バイナリビット演算を行います.
    while (length < n) {
                    data = mix%2 + data
                    mix = parseInt(mix/2)
                    length++
                }
    TOString(2)を使用して、次の対応する数値をバイナリに変換できます.
    一番前に0があるので表示できません.
    このように分かち合う方法を選んでwhileゲートを回りました
                let changeNum = data.replace(/1/g,'#').replace(/0/g,' ')
                newArr.push(changeNum)
            }
        return newArr;
    }
    最後に、文字列を条件に一致するように変更します.
    変更した文字列を配列に挿入します.

    結果



    ❓ Question 2


    ダーツゲーム
  • ダーツ合計
  • 📝 My Solution 2

    function solution(dartResult) {
        let bonus = dartResult.split(/[0-9,*#]/).filter(el => el!=='');
        let score = dartResult.split(/[A-Z,*#]/).filter(el => el!=='');
        let option = dartResult.split(/[0-9]/).filter(el=>el!='').join()
        		.split(/[A-Z]/).join('').split(',');
        const newArr = [];
    まず、正規表現を使用して、スコア/ボーナス/オプションをそれぞれ解きます.
    for (let i = 0; i<score.length; i++) {
                if (bonus[i] === 'S') {
                    newArr.push(Number(score[i]))
                } else if (bonus[i] === 'D') {
                    newArr.push(Number(score[i]) ** 2)
                } else {
                    newArr.push(Number(score[i]) ** 3)
                }
            }
    以下の点数とボーナスを組み合わせて、
    newArrに入れる
    for (let i = 0; i<newArr.length; i++) {
                if (option[i] === '*') {
                    newArr[i] = newArr[i] * 2;
                    newArr[i-1] = newArr[i-1] * 2;
                } else if (option[i] === '#') {
                    newArr[i] = newArr[i] * -1
                } else {
                    newArr[i] = newArr[i]
                }
            }
        return answer=newArr.reduce((a,b) => a+b)
    }
    最後に、オプションを適用して配列内のすべての和を加算します.

    結果