0_ch4n
기계쟁이\n개발자
0_ch4n
0chn.xxx@gmail.com @0ch._.n
전체 방문자
오늘
어제

공지사항

  • All (282)
    • 🖥 CS (21)
      • 네트워크 (12)
      • 운영체제 (3)
      • 자료구조 (2)
      • Web (4)
    • 🧠 Algorithm (185)
      • [C] BOJ (93)
      • [JAVA] Programmers (91)
    • 📚 Study (69)
      • HTML&CSS (19)
      • MySQL (11)
      • JAVA (22)
      • Servlet&JSP (8)
      • Thymeleaf (2)
      • Spring (5)
      • JPA (2)
    • 📖 Book (1)
    • 📃 Certification (6)
      • 정보처리기사 (6)

인기 글

최근 글

최근 댓글

태그

  • kakao
  • java
  • til
  • CSS
  • 자바
  • 코테
  • 코딩테스트
  • Programmers
  • 프로그래머스
  • 카카오

블로그 메뉴

  • 홈
  • 태그
  • 방명록

티스토리

hELLO · Designed By 정상우.
0_ch4n

기계쟁이\n개발자

[70129번] 이진 변환 반복하기
🧠 Algorithm/[JAVA] Programmers

[70129번] 이진 변환 반복하기

2022. 7. 20. 16:09
반응형

월간 코드 챌린지 시즌1

 

✔️ 문제 설명

0과 1로 이루어진 어떤 문자열 x에 대한 이진 변환을 다음과 같이 정의합니다.

  1. x의 모든 0을 제거합니다.
  2. x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 바꿉니다.

예를 들어, x = "0111010"이라면, x에 이진 변환을 가하면 x = "0111010" -> "1111" -> "100" 이 됩니다.

0과 1로 이루어진 문자열 s가 매개변수로 주어집니다. s가 "1"이 될 때까지 계속해서 s에 이진 변환을 가했을 때, 이진 변환의 횟수와 변환 과정에서 제거된 모든 0의 개수를 각각 배열에 담아 return 하도록 solution 함수를 완성해주세요.

 

더보기

✔️ 입출력 예

입출력 예 #1

  • "110010101001"이 "1"이 될 때까지 이진 변환을 가하는 과정은 다음과 같습니다.
  • 3번의 이진 변환을 하는 동안 8개의 0을 제거했으므로, [3,8]을 return 해야 합니다.

입출력 예 #2

  • "01110"이 "1"이 될 때까지 이진 변환을 가하는 과정은 다음과 같습니다.
  • 3번의 이진 변환을 하는 동안 3개의 0을 제거했으므로, [3,3]을 return 해야 합니다.

입출력 예 #3

  • "1111111"이 "1"이 될 때까지 이진 변환을 가하는 과정은 다음과 같습니다.
  • 4번의 이진 변환을 하는 동안 1개의 0을 제거했으므로, [4,1]을 return 해야 합니다.

 

✔️ 제한 사항

  • s의 길이는 1 이상 150,000 이하입니다.
  • s에는 '1'이 최소 하나 이상 포함되어 있습니다.

 

✔️ 코드 구상

s가 1이 될 때까지 2진수로 변환하고 2가지(0의 개수, 1의 개수)를 구한 뒤

[변환 횟수, 0의 누적 갯수] 를 반환하면 되는 쉬운 문제이다.

 

✔️ 코드

import java.util.Arrays;

class Solution {
    public int[] solution(String s) {
        int[] answer = new int[2];

        while(true) {
            int count = (int) Arrays.stream(s.split("")).filter(e -> e.equals("0")).count();

            if(s.equals("1")) {
                break;
            }

            answer[0]++;
            answer[1] += count;
            s = Integer.toString(s.length() - count, 2);
        }
        return answer;
    }
}

📄 원문

 

프로그래머스

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

programmers.co.kr

 

반응형
저작자표시 (새창열림)

'🧠 Algorithm > [JAVA] Programmers' 카테고리의 다른 글

[68936번] 쿼드압축 후 개수 세기  (0) 2022.07.22
[17683번] 방금그곡  (0) 2022.07.21
[12980번] 점프와 순간 이동  (0) 2022.07.19
[77885번] 2개 이하로 다른 비트  (0) 2022.07.18
[42578번] 위장  (0) 2022.07.18
    0_ch4n
    0_ch4n
    while(true) { study(); }

    티스토리툴바