문제 출처 - Programmers
문제는 여기
[풀이]
1. 문자열이 1이 될 때까지 변환작업을 반복한다.
2. s에서 0을 제거해줘야 하므로 charAt()을 사용해 각 부분이 0인지 체크하고 0이면 0 카운트를 증가시켜준다.
3. 0이 아닌 문자들은 따로 뽑아서 저장해준다.
4. 3. 에서 만들어진 문자열의 길이를 구한다.
5. 4. 에서 구해진 길이를 Integer.toBinaryString()을 사용해 2진수로 변환해준다.
6. 변환 작업 횟수를 증가시켜주고 위 과정을 반복한다.
8. 각 결과를 넣고 출력해준다.
[접근]
1. 문제에서 주어진 순서대로 반복시키면 되겠다고 생각하고 문제를 해결하였다.
[코드]
class Solution {
public int[] solution(String s) {
int count = 0; // 변환 횟수
int zero = 0; // 0 횟수
int[] answer = new int[2];
// 문자열이 1이 될 때 까지 반복
while (s.compareTo("1") != 0) {
String word = ""; // 변환된 문자
// s의 길이만큼 체크
for (int i = 0; i < s.length(); i++) {
// 각 부분을 잘라서 체크할 것
char c = s.charAt(i);
// 0이면
if (c == '0') {
zero++; // 0 횟수 증가
}
// 0이 아니면
else
word += c; // 변환된 문자에 추가
}
// 0을 제거하고 만들어진 새 문자의 길이를 2진수 변환
// Integer.toBinaryString(int num); ==> 2진수로 변환해줌
s = Integer.toBinaryString(word.length());
// 변환 횟수 증가
count++;
}
// 결과 담아주기
answer[0] = count;
answer[1] = zero;
return answer;
}
}
'문제 풀이 > Programmers' 카테고리의 다른 글
[프로그래머스] 없는 숫자 더하기 (JAVA) (0) | 2022.03.17 |
---|---|
[프로그래머스] 3진법 뒤집기 (JAVA) (0) | 2022.03.16 |
[프로그래머스] 두 개 뽑아서 더하기 (JAVA) (0) | 2022.03.14 |
[프로그래머스] 삼각 달팽이 (JAVA) (0) | 2022.03.13 |
[프로그래머스] 신규 아이디 추천 (JAVA) (0) | 2022.03.11 |