프로그래머스 | 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)
}
마지막으로 옵션을 적용해 배열의 모든 합을 더해줍니다.
결과
Author And Source
이 문제에 관하여(프로그래머스 | 2018 KAKAO [1차] 코테_JS), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sstaar91/Algorithm-Programmers-2018-Kakao-1st-1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)