プログラマー|2018 KAKAO[第一]珂泰JS
2619 ワード
難易度:Level.1
言語:Javascript
出題履歴:2018 KAKAO BLIND RECRUITMENT
秘密の地図秘密地図を解読し、「#」とスペースからなる文字列 を出力する
バイナリビット演算を行います.
一番前に0があるので表示できません.
このように分かち合う方法を選んでwhileゲートを回りました
変更した文字列を配列に挿入します.
ダーツゲームダーツ合計
newArrに入れる
言語: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)
}
最後に、オプションを適用して配列内のすべての和を加算します.結果
Reference
この問題について(プログラマー|2018 KAKAO[第一]珂泰JS), 我々は、より多くの情報をここで見つけました https://velog.io/@sstaar91/Algorithm-Programmers-2018-Kakao-1st-1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol