logo
|
Blog
    Algorithm

    DAY4-String to Interger[Level: Medium]

    김보람's avatar
    김보람
    Jan 07, 2026
    DAY4-String to Interger[Level: Medium]
    Contents
    문제. String to Interger내 풀이 코드.리팩토링이 필요한 부분.

    문제. String to Interger

    문제를 요약해보면

    • 문자 → 숫자로 바꾼다

    • 앞 공백은 무시한다

    • 그 다음 “-”, “+”는 부호로 사용하고 아무것도 없을 시 양수로 처리한다

    • 숫자가 나오는 동안만 읽고 만약 숫자 이전에 글자가 나온다면 0을 리턴한다

    • 숫자가 아닌 글자를 만나면 숫자까지만 리턴한다

    • 32비트 정수 범위를 넘기면 자른다

    • 결과를 정수로 반환한다

    위 조건을 충족하면 성공이다

    내 풀이 코드.

    var myAtoi = function(s) {
    
        const INT_MIN = - Math.pow(2,31)
        const INT_MAX = Math.pow(2,31) - 1
    
        let started = false
        let result = ""
    
        for(let i = 0; i < s.length; i++){
            if(!started && s[i] === " "){
                continue
            }
    
            if(!started && (s[i] === "-" || s[i] === "+")){
                started = true
                result += s[i]
                continue
            }
    
            if(s[i] >= "0" && s[i] <= "9" ){
                started = true
                result += s[i]
                continue
            }
            break
        }
    
        let num = Number(result)
    
    
        if (isNaN(num)) return 0
        if (num < INT_MIN) return INT_MIN
        if (num > INT_MAX) return INT_MAX
    
        return num
    };

    INT_MIN, INT_MAX의 경우 그냥 외우면 된다. 정수32비트의 범위는

    −2,147,483,648 ~ 1 = 2,147,483,647 이고 이를 계산할때는

    최소값 → —Math.pow(2,31)
    최대값 → Math.pow(2,31) - 1

    로 계산할수있고, 이범위를 넘어가면 최소 또는 최대값을 그대로 리턴하면 된다

    started는 숫자가 들어갔는지를 확인하는 불리언값의 변수이다 숫자가 시작되었다면 뒤에 글자도, 부호도 올 수 없기 때문에 기억한다

    started의 기준으로 공백을 무시하거나 부호를 넣어준다

    그리고 기억해야할건 조건을 숫자로 명시할때는 0을 조심해야한다 if문은 정말 true인지 false인지를 구분하는것이 아닌 투루시한값과 펄시한 값을 판별하기때문에 s[i] >= "0" 이렇게 문자로 비교했다

    리팩토링이 필요한 부분.

    let num = Number(result)

    지금은 Number를 써서 값을 숫자화 했지만 하나씩 숫자로 넣을 수 있으면 좋겠다.

    Share article
    Contents
    문제. String to Interger내 풀이 코드.리팩토링이 필요한 부분.

    김보람 | 930802qhfka@gmail.com

    RSS·Powered by Inblog