본문 바로가기

알고리즘

이진수 string 활용

https://school.programmers.co.kr/learn/courses/30/lessons/181921

 

프로그래머스

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

programmers.co.kr

내 풀이

import java.util.*;

class Solution {
    public boolean check5N0(String s){
        String[] ls = s.split("");
        for(String ss : ls){
            if(!(ss.equals("5") || ss.equals("0")))
                return false;
        }
        return true;
    }
    public List solution(int l, int r) {
        ArrayList<Integer> ans = new ArrayList<>();
        for(;l<=r;l++){
            if(l%5 == 0){
                String s = String.valueOf(l);
                if(check5N0(s))
                    ans.add(l);
            }
        }
        if(ans.isEmpty())
            ans.add(-1);
        
        return ans;
    }
}

 

0과 5로 이루어지고 오름차순 정렬을 하면 

1 10 11 100 101 111 ... 에 5를 곱한것과 결과 같다는 패턴과

Integer.toBinaryString(2진수 스트링의 형태로 표현할 int 값)을 활용해서

 

다시 푼 코드

import java.util.*;

class Solution {
    public List solution(int l, int r) {
        ArrayList<Integer> ans = new ArrayList<>();
        //결과는 1 10 11 100 101 110 ... 이진법으로 1 2 3 4 5 표현한것과 같음
        // 1 000 000 은 이진법으로 2의 6승 64임
        // Integer.toBinaryString 활용
        for(int i = 1; i<=64; i++){
            int n = Integer.parseInt(Integer.toBinaryString(i))*5;
            if(l<=n && n<=r)
                ans.add(n);
            if(n>r)
                break;
        }
        if(ans.isEmpty())
            ans.add(-1);
        
        return ans;
    }
}

'알고리즘' 카테고리의 다른 글

String 과 StringBuilder 성능차이  (0) 2024.06.11
deque의 활용  (0) 2024.06.11
나선형 보드  (0) 2024.06.09
Character uppercase 사용법  (0) 2024.06.08
원하는 문자열 찾기  (0) 2024.06.08