dev_beomgeun
꾸준하게 차근차근
dev_beomgeun
전체 방문자
오늘
어제
  • 분류 전체보기 (170)
    • 전공 (0)
      • 운영체제 (0)
      • 알고리즘 (0)
      • 자료구조 (0)
      • 데이터베이스 (0)
      • 네트워크 (0)
    • 개발 공부 (32)
      • 웹 (6)
      • 리눅스 (4)
      • 머신러닝 (1)
      • 스프링 (17)
      • Git (2)
      • AWS (2)
    • 개발 도서, 강의 (3)
      • 스프링 입문을 위한 자바 객체지향의 원리와 이해 (0)
      • 모든 개발자를 위한 HTTP 웹 기본 지식(김영한.. (2)
      • 스프링 부트와 AWS로 혼자 구현하는 웹서비스 (1)
    • 문제 풀이 (118)
      • 백준 알고리즘 (72)
      • 프로그래머스 알고리즘, SQL (38)
      • Hackerrank SQL (8)
    • 프로젝트 기록 (4)
      • 캡스톤 종합설계 (4)
      • 반려하루 프로젝트 (0)
    • 활동 기록 (12)
      • 네이버 부스트캠프 (7)
      • 취준 & 코테 (4)
      • 소프트웨어 마에스트로 13기 (1)
    • 이것저것 (1)

블로그 메뉴

  • 홈
  • 깃허브
  • 링크드인
  • 방명록

공지사항

인기 글

태그

  • 그래프탐색
  • 서블릿
  • c++
  • 스프링
  • 일기
  • Baekjoon
  • Hackerrank
  • 백준 DP
  • BFS
  • 프로그래머스 SQL
  • 반성
  • 회고
  • 프로그래머스
  • HackerRank mysql
  • 백준
  • dp
  • AI Tech
  • 부스트캠프
  • 네이버 부스트캠프
  • 기록

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
dev_beomgeun

꾸준하게 차근차근

문제 풀이/프로그래머스 알고리즘, SQL

[프로그래머스 월간 코드 챌린지 시즌 1] 이진 변환 반복하기 (구현, 계산) [C++]

2022. 1. 11. 20:11
728x90

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

 

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

 

programmers.co.kr


단순한 문제이다.

주어진 이진수를

1. 이진수에서 0을 제외한다. - deleteZero 함수 (pair <string, int>로 변환한 이진수와 지운 0의 개수를 반환한다)

2. 나온 이진수 결과물의 길이를 다시 이진수로 만든다. - convert 함수

3. 위의 과정을 반복하면서 최종적으로 1이 나오면 종료한다.

 

여기서 진행하면서 변환 횟수와 지운 0의 개수를 세서 반환하면 된다.


#include <string>
#include <vector>
#include <algorithm>
#include <iostream>

using namespace std;

typedef pair<string, int> psi;

psi deleteZero(string target){
    int zeroCnt = 0;
    string result = "";
    for(int i = 0 ; i < target.size() ; i++){
        if(target[i] == '0'){
            zeroCnt++;
        }
        else
            result += target[i];
    }
    return {result, zeroCnt};
}

string convert(string target){
    int before = target.size();
    string after = "";
    while(before){
        after += to_string(before % 2);
        before  = before / 2;
    }
    reverse(after.begin(), after.end());
    return after;
}

vector<int> solution(string s) {
    vector<int> answer;
    int totalZero = 0;
    int cnt = 0;
    while(s != "1"){
        psi result = deleteZero(s);
        totalZero += result.second;
        s = convert(result.first);
        cnt++;
    }
    answer.push_back(cnt);
    answer.push_back(totalZero);
    return answer;
}

 

728x90
저작자표시 비영리 변경금지

'문제 풀이 > 프로그래머스 알고리즘, SQL' 카테고리의 다른 글

[프로그래머스 lv2] N개의 최소공배수 (최대공약수, 최소공배수) [C++]  (0) 2022.01.13
[프로그래머스 2018 KAKAO BLIND RECRUITMENT 3차] 방금 그곡 (문자열, ) [C++]  (0) 2022.01.11
[프로그래머스 위클리 챌린지] 피로도 (완전탐색, next_permutation) [C++]  (0) 2022.01.04
[프로그래머스 2019 카카오 개발자 겨울 인턴십] 징검다리 건너기 (파라매트릭 서치) [C++]  (0) 2021.10.07
[프로그래머스 2019 카카오 개발자 겨울 인턴십] 불량 사용자 (DFS, 조합) [C++]  (0) 2021.10.07
    '문제 풀이/프로그래머스 알고리즘, SQL' 카테고리의 다른 글
    • [프로그래머스 lv2] N개의 최소공배수 (최대공약수, 최소공배수) [C++]
    • [프로그래머스 2018 KAKAO BLIND RECRUITMENT 3차] 방금 그곡 (문자열, ) [C++]
    • [프로그래머스 위클리 챌린지] 피로도 (완전탐색, next_permutation) [C++]
    • [프로그래머스 2019 카카오 개발자 겨울 인턴십] 징검다리 건너기 (파라매트릭 서치) [C++]
    dev_beomgeun
    dev_beomgeun
    백엔드 개발을 하며 얻은 지식과 경험을 공유합니다. 현재 카카오페이에서 백엔드 엔지니어로 일하고 있습니다.

    티스토리툴바