★[JAVA/프로그래머스] 이진 변환 반복하기

윤소영·2024년 4월 10일
0

JAVA

목록 보기
41/41

문제


이진 변환 반복 문제 링크 클릭!



문제 답안

class Solution {
    public int[] solution(String s) {
        int[] answer = new int[2];
        int zerocnt = 0;
        int transfercnt = 0;
        boolean run = true;
        while(run){
            for(int i = 0; i < s.length(); i++){
                if(s.charAt(i) == '0')
                    zerocnt++;
            }
            
            s = s.replace("0", "");
            int l = s.length();
            s = Integer.toBinaryString(l);
            transfercnt++;
            if(s.equals("1"))
                run = false;
        }
        answer[0] = transfercnt;
        answer[1] = zerocnt;
        return answer;
    }
}



답안 풀이

[새로 알게 된 개념]

  • Integer.toBinaryString() : int 형태의 10진수(demical)를 string 형태의 2진수(binary)로 출력
  • equals() : 문자열을 비교할 땐 == 말고 equals()를 써야한다.

그래서 마지막에 while문을 빠져나오게 하기 위해 쓴 조건문에 s == "1"라고 쓰니까 무한루프를 돌더라(문법적 오류가 안뜨고 무한루프가 돌아서 뭐가 잘못 됐는지 모르다가 스터디방에 물어봐서 알게 되었다.)

1개의 댓글

comment-user-thumbnail
2024년 4월 21일

"안녕하세요, 99클럽 그룹 리더 임강민입니다!

새로 알게 된 개념과 함수들을 주의할 점과 더불어 정리하신게 인상 깊어요!

앞으로도 힘내서 매일 TIL 도전해 보세요! 화이팅입니다 :)

99클럽 https://bit.ly/3TN5TBL"

답글 달기