프로그래머스 | 2018 KAKAO [1차] 코테_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 = ''

각 지도배열에서 벽이 있는지 없는지를 판단하기 위해
2진법 비트연산을 해줍니다.

while (length < n) {
                data = mix%2 + data
                mix = parseInt(mix/2)
                length++
            }

다음 해당 수를 2진법으로 바꾸기 위해서 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)
}

마지막으로 옵션을 적용해 배열의 모든 합을 더해줍니다.

결과

좋은 웹페이지 즐겨찾기