ABOUT ME

Today
Yesterday
Total
  • 1526. [JavaScript]가장 큰 금민수
    JavaScript_알고리즘/Bronze I 2024. 7. 16. 03:12

    1. 문제

     

     

    2. 접근 방법

     

    • 시간 제한: 1초
    • 메모리 제한: 128MB
    • 구현

     

    3. 자바스크립트 코드

     

    const fs = require('fs')
    const input = fs.readFileSync('./1526.txt').toString().trim()
    const inputLength = input.length
    const N = Number(input)
    // 리스트
    let ans = []
    // 최대값 갱신
    let max_value = 0
    // 백트래킹으로 구현
    function backtracking(start) {
    // 초기 조사한 input 길이보다 작은경우
        if (start <= inputLength) {
        // 정답을 저장할 변수
            const answer = Number(ans.join(""))
            // N 보다 answer이 작을때 max_value 값과 answer 비교 하여 갱신
            if (answer <= N) {
                if (max_value < answer) {
                    max_value = answer
                }
            }
        } else {
            return
        }
        // 4, 7 반복
        for (let i of ['4', '7']) {
            ans.push(i)
            backtracking(start + 1)
            ans.pop()
        }
    }
    backtracking(0)
    console.log(max_value)

     

    4. 문제를 풀고난 후 생각

     

    •  백트래킹을 통해서 input 보다 작은 값의 경우 최대값을 갱신해 가며 문제를 해결하는 구조로 구현했다.

     

    5. 문제를 푸는데 도움이 되는 지식

     

    • 백트래킹

    댓글

Designed by Tistory.