본문 바로가기
프로그래머스

2개 이하로 다른 비트 C++

by paysmile 2022. 3. 2.

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

 

코딩테스트 연습 - 2개 이하로 다른 비트

 

programmers.co.kr

#include <string>
#include <vector>
#include <cmath>

using namespace std;

vector<long long> solution(vector<long long> numbers) {
	vector<long long> answer;

	for (int i = 0; i < numbers.size(); i++) {
		long long value = numbers[i];

		if (value % 2 == 0) {
			answer.push_back(value + 1);
		}
		else {
			int index = 0;
			long long ans = numbers[i];
			while (true) {
				if (value % 2 == 1) {
					index++;
					value /= 2;
				}
				else {
					break;
				}
			}
			index -= 1;
			int num = 0;
			for (; index > 0; index--) {
				ans += pow(2, num);
				num++;
			}
			answer.push_back(ans+1);
		}
	}

	return answer;
}

'프로그래머스' 카테고리의 다른 글

카드 짝 맞추기 C++  (0) 2022.03.06
괄호 회전하기 C++  (0) 2022.03.02
외벽 점검 C++  (0) 2022.02.21
신고 결과 받기 C++  (0) 2022.02.19
k진수에서 소수 개수 구하기 C++  (0) 2022.02.19