[프로그래머스 C++] 다음 큰 숫자
[프로그래머스 C++] 다음 큰 숫자
https://school.programmers.co.kr/learn/courses/30/lessons/12911
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
해결전략
구현, 이진수 변환
코드
#include <iostream> #include <string> using namespace std; //이진수로 전환했을때 1의 개수를 카운팅하여 리턴하는 함수 int BinaryCount(int n) { int cnt = 0; string bdigit; while (n > 0) { if (n % 2 == 1) cnt++;//1의 개수를 카운팅 //이진수를 string으로 전환. //풀고보니 해당 문제에서는 굳이 필요하지 않았다. 하지만 자주 쓰이니 눈에 익혀두자. bdigit = to_string(n % 2) + bdigit; n /= 2; } return cnt; } int solution(int n) { int answer = 0; int x = BinaryCount(n);//n일 때 1의 개수 //n을 1씩 증가시키면서 이진수 변환 while(n++) { //변환한 이진수의 1의 개수 = n일 때 1의 개수면 break 종료 if (BinaryCount(n) == x) break; } answer = n;//answer에 갱신된 n값을 넣어준다. return answer; } int main() { cout << solution(78); return 0; }
인터넷에서 찾은 간단한 풀이
#include <bitset> using namespace std; int solution(int n) { //현재 주어진 정수 n의 이진수 빈도에서 1의 개수를 찾는다. int num = bitset<20>(n).count(); //n을 증가하면서 해당 조건에 부합하는 수를 찾을 때까지 반복 //조건: 이진수의 1의 개수가 처음 n의 1의 개수와 같아야 한다. while (bitset<20>(++n).count() != num); return n; }
Bitset 참고 링크
https://notepad96.tistory.com/35
[STL] Bitset 생성 및 초기화 사용법
1. bitset bitset은 0 또는 1, true 또는 false의 값을 갖도록 필요한 경우 사용할 수 있다. 이와 같은 형태의 따라서 여러가지 비트 연산을 할 수 있도록 여러 멤버 함수들을 지원한다. 또한, 마찬가지로
notepad96.tistory.com
'⭐ 코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 C++] 카펫 (1) | 2023.08.22 |
---|---|
[프로그래머스 C++] 짝지어 제거하기 (0) | 2023.08.21 |
[프로그래머스 C++] 숫자의 표현 (0) | 2023.08.12 |
[프로그래머스] 이진 변환 반복하기 (0) | 2023.07.30 |
[프로그래머스] 최솟값 만들기 (0) | 2023.07.29 |
댓글
이 글 공유하기
다른 글
-
[프로그래머스 C++] 카펫
[프로그래머스 C++] 카펫
2023.08.22 -
[프로그래머스 C++] 짝지어 제거하기
[프로그래머스 C++] 짝지어 제거하기
2023.08.21 -
[프로그래머스 C++] 숫자의 표현
[프로그래머스 C++] 숫자의 표현
2023.08.12 -
[프로그래머스] 이진 변환 반복하기
[프로그래머스] 이진 변환 반복하기
2023.07.30
댓글을 사용할 수 없습니다.