bitset 3

[C++] 진수 변환

진수 변환 개요 프로그래밍에는 여러 가지 다양한 알고리즘이 존재하며, 그중 십진수를 이진수로 바꾸는 알고리즘은 매우 중요한 개념이다. 이진수 변환은 많은 프로그래밍 문제에서 요구되는 기술로서, 백준 1094 막대기 문제나 프로그래머스의 다음 큰 숫자 문제와 같이 이진수에 관한 연산이 필요한 경우가 대표적이다. 이 게시글에서는 C++을 사용하여 십진수를 이진수로 변환하는 방법을 자세히 알아보도록 하겠다. 원리 일반적으로 10진수를 2진수로 변환하는 과정은 다음과 같다. 십진수 n을 2로 나눈 나머지를 구하고, 이 값은 이진수의 가장 낮은 자릿수가 된다. n을 2로 나눈 몫을 새로운 n으로 설정한다. n이 0이 될 때까지 이 과정을 반복한다. 이 원리는 이진수가 2의 지수 형태로 표현되는 것에서 기인한다. ..

Language/C++ 2023.07.06

[프로그래머스] 다음 큰 숫자 with C++

문제 설명 제한 사항 및 입출력 예제 개념 주어진 정수 n의 이진 표현에서 1의 개수가 같은 n보다 큰 정수 중 가장 작은 정수를 찾는 문제다. 이진 표현을 하기 위해 bitset 라이브러리를 이용하면 효율적으로 문제를 해결할 수 있다. 풀이 #include #include #include using namespace std; int CountOnesInBinary(int number) { bitset binaryRepresentation(number); string binaryString = binaryRepresentation.to_string(); return count(binaryString.begin(), binaryString.end(), '1'); } int solution(int n) { ..

[프로그래머스] 이진 변환 반복하기 with C++

문제 설명 제한 사항 및 입출력 예제 개념 1과 0으로 구성된 문자열에서 특정 조건을 만족할 때까지 이진 변환 프로세스를 반복하는 문제다. 프로세스는 다음과 같다. 문자열에서 0을 제거 (제거한 횟수 카운트) 문자열의 길이를 이진법으로 표현 (입력 문자열이 1이 될때까지, 횟수 카운트) 이때 문자열의 길이를 이진법으로 표현하기 위해 bitset 라이브러리를 사용하면 효율적으로 문제를 풀 수 있다. 풀이 #include #include #include using namespace std; vector solution(string s) { vector answer(2); int cnt = 0; while (s[0] != '1' || s.size() != 1) { int num = count(s.begin()..