꾸물꾸물 졔의 개발공부
[프로그래머스] 이진 변환 반복하기 - JAVA (월간 코드 챌린지 시즌 1 본문
https://school.programmers.co.kr/learn/courses/30/lessons/70129
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
💡deleteZero(String s) : s에 포함된 0의 갯수를 카운트 하고, 0을 모두 제거하는 메소드
- s.charAt(i) : s의 i번째 인덱스의 문자
- s.replace(a, b) : s에 포함되어 있는 a 문자/문자열 "전부"를 b로 변환
- 1. s의 문자를 앞에서부터 차례대로 탐색하여 만약 '0' 일 경우 제거되는 0갯수 카운트 ++
- 2. 모두 카운트 했다면 s에 포함된 "0"을 모두 공백("")으로 변환
💡changeBin(int num) : num을 2진법으로 변환 (num == s.length(), s의 길이)
- String change : num을 2진법으로 변환한 문자열을 저장할 변수
- 1. num을 2로 나눈 나머지는 change의 앞쪽에 더하고, num을 2로 나눈 몫은 num에 저장
- 2. num이 1이 되기전까지 1번 과정을 반복하다가, 1이 되면 change의 가장 앞쪽에 1(=num)붙이기
s가 1이 되기전까지 deleteZero() ▶changeBin() 반복하며 제거하는 0의 갯수, 반복 횟수 카운트
[소스 코드]
class Solution {
static int delete=0;
static int change=0;
public int[] solution(String s) {
int[] answer = new int[2];
while(!s.equals("1")){
change++;
s= deleteZero(s); //모든 0제거하기
s= changeBin(s.length()); //s의 길이를 2진법으로 변환
}
answer[0]= change; answer[1]= delete;
return answer;
}
//s에 포함된 0 갯수 카운트 + 모든 0 제거
public String deleteZero(String s){
for(int i=0; i<s.length(); i++){
if(s.charAt(i) == '0') delete++;
}
s= s.replace("0", "");
return s;
}
//s의 길이를 2진법으로 변환
public String changeBin(int num){
//몫이 1이면 종료 ,
String change ="";
while(num!=1){
change = num%2+change;
num/=2;
}
change = num +change;
return change;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 쿼드압축 후 개수 세기 - JAVA (월간 코드 챌린지 시즌1) (0) | 2023.09.07 |
---|---|
[프로그래머스] 이모티콘 할인행사 - JAVA (2023 KAKAO BLIND RECRUITMENT) (0) | 2023.09.04 |
[프로그래머스] 개인정보 수집 유효기간 - JAVA (2023 KAKAO BLIND RECRUITMENT) (0) | 2023.09.01 |
[프로그래머스] 등산코스 정하기 - JAVA (2022 KAKAO TECH INTERNSHIP) (0) | 2023.08.22 |
[프로그래머스] 다단계 칫솔 판매 - JAVA (2021 Dev-Matching: 웹 백엔드 개발자(상반기)) (0) | 2023.06.27 |