본문 바로가기

백준

백준14562 - 태권왕

https://www.acmicpc.net/problem/14562

 

14562번: 태권왕

첫째 줄에 테스트 케이스의 수 C(1 ≤ C ≤ 100)이 주어진다. 둘째 줄부터 C줄에 걸쳐 테스트 케이스별로 현재 점수 S와 T가 공백을 사이에 두고 주어진다. (1 ≤ S < T ≤ 100)

www.acmicpc.net

자바스크립트로 처음 풀어본 재귀함수 문제이다. 순수함수로 구현하지 못한 점이 아쉽다. spread연산자를 사용하였다.

//1. 비동기로 처리하자
//2. 재귀를 이용하자
//https://youj.tistory.com/17
const readline = require('readline')

let ans
let cnt = 0

const rl = readline.createInterface({
    output: process.stdout,
    input: process.stdin
})

function rec(x, y, cnt) {
    if(x > y) {
        return
    }
    else if(x == y) {
        ans = Math.min(ans, cnt)
        return
    }
    else {
        rec(x * 2, y + 3, cnt + 1)
        rec(x + 1, y, cnt + 1)
    }
}

function parseValue(input) {
    return arr = input.split(' ').map(x => { return parseInt(x) })
}

rl.on('line', line => {
    if(cnt === 0) {
        cnt = parseInt(line)
    }
    else {
        const parse = parseValue(line)
        ans = parse[1] - parse[0]
        rec(...parse, 0)
        console.log(ans)
        cnt--
    }

    if(cnt === 0) {
        rl.close()
    }
}).on('close', () => {
    process.exit()
})

 

'백준' 카테고리의 다른 글

백준2685 - 님비합  (0) 2020.08.25
백준2980 - 도로와 신호등  (0) 2020.08.09
백준4470 - 줄번호  (0) 2020.08.06
백준17249 - 태보태보 총난타  (0) 2020.08.06
백준11383 - 뚊  (0) 2020.08.05