[자바스크립트/javascript] 프로그래머스 : 코딩테스트 입문 65~70문제

66. 문자열 계산하기

https://school.programmers.co.kr/learn/courses/30/lessons/120902?language=javascript 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

function solution(my_string) {
    return eval(my_string)
}

 

 

 

67. 컨트롤 제트

https://school.programmers.co.kr/learn/courses/30/lessons/120853?language=javascript 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

function solution(s) {
    let array = []
    s = s.split(' ')
    for (i of s) {
        if (i === "Z") {
            array.pop()
        } else {
            array.push(Number(i))
        }
    }
    return array.length === 0 ? 0 : array.reduce((acc,cur) => acc+cur)
}

 

 

 

68. 외계어 사전

https://school.programmers.co.kr/learn/courses/30/lessons/120869?language=javascript 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

function solution(spell, dic) {
    spell = spell.sort().join('')
    dic = dic.map(w => w.split('').sort().join('') === spell)
    return dic.includes(true) ? 1 : 2 ;
}

 

 

 

69. 삼각형의 완성조건(2)

function solution(sides) {
    let sum_sides = sides.reduce((a,c)=>a+c)
    let result1 = sum_sides - Math.max(...sides)
    let result2 = 0
    for (let i = 1; i < Math.max(...sides); i++) {
        if (i+Math.min(...sides)>Math.max(...sides)) {
            result2 += 1
        }
    }
    return result1 + result2;
}

다른 사람 풀이

function solution(sides) {
    return Math.min(...sides)*2-1
}

...

 

 

70. 구슬을 나누는 경우의 수

https://school.programmers.co.kr/learn/courses/30/lessons/120840?language=javascript 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

function solution(balls, share) {
    let b = 1;
    let s = 1;
    let bs = 1;
    for (let i = 0; i<balls; i++) {
        b += i * b
    }
    for (let i = 0; i<share; i++) {
        s += i * s
    }
    for (let i = 0; i<balls-share; i++) {
        bs += i * bs
    }
    return Math.ceil((b/(bs*s)));
}

다른 사람 풀이

const 팩토리얼 = (num) => num === 0 ? 1 : num * 팩토리얼(num - 1)

function solution(balls, share) {
  return Math.round(팩토리얼(balls) / 팩토리얼(balls - share) / 팩토리얼(share))
}

재귀함수..

comment