하루에 한 문제

[프로그래머스 월간 코드 챌린지 시즌1]이진 변환 반복하기 본문

알고리즘/프로그래머스

[프로그래머스 월간 코드 챌린지 시즌1]이진 변환 반복하기

dkwjdi 2021. 1. 22. 01:06

https://programmers.co.kr/learn/courses/30/lessons/70129

 

코딩테스트 연습 - 이진 변환 반복하기

 

programmers.co.kr

class Solution {
	    public int[] solution(String s) {
	        int len=0, cnt=0, remove=0;
	        
	        while(true) {
	        	if(s.length()==1) break;
	        	cnt++;
	        	len=s.length();
	        	s=s.replace("0", ""); // 0다지우기
	        	remove+=len-s.length(); // x의 모든 0을 제거할때 0제거한 갯수
	        	s=Integer.toBinaryString(s.length());
	        }
	        
	        int[] answer = {cnt, remove};
	        return answer;
	    }
	}

 

소요시간 : 10분

 

쉬운 문제입니다.

 

로직을 살펴보면

 

1. s의 길이를 구해준다.

2. s에서 0을 다 지워준다

3. s의 길이가 변한 만큼 remove에 더해준다.

4. s의 길이를 2진수로 바꿔서 다시 s에 넣어준다.

 

를 반복하다가 s의 길이가 1이 되면 종료하면 됩니다!

Comments