Level.2
문제
풀이
#include <iostream>
using namespace std;
int solution(int n)
{
int ans = 0;
while(n>0){
if(n%2==0){
n/=2;
}
else {
int num = n%2;
ans += num;
n -= num;
}
}
return ans;
}
다른 사람 풀이 1.
#include <iostream>
using namespace std;
int solution(int n)
{
int ans = 0;
while(n >0)
{
ans += n%2;
n /=2;
}
return ans;
}
다른 사람 풀이 2.
#include <iostream>
using namespace std;
int solution(int n)
{
int ans=0;
for(int i=0;i<31;i++)
if(n&(1<<i))
ans++;
return ans;
}
for(int i=0;i<31;i++)
if(n&(1<<i))
ans++;
위 방법을 통해 n을 2진법으로 표현했을 때 1의 개수를 셀 수 있다.
연산자 | 설명 |
& | &연산자는 상수사이이에 위치하게 되면 비트연산(AND)를 하게 된다. |
<< | 피연산자의 비트 열을 왼쪽으로 이동시킨다. |
>> | 피연산자의 비트 열을 오른쪽으로 이동시킨다. |
'Algorithm > Programers - C++' 카테고리의 다른 글
[프로그래머스] 푸드 파이트 대회 - reverse() (0) | 2023.04.16 |
---|---|
[프로그래머스] 숫자짝꿍 - map (0) | 2023.04.15 |
[프로그래머스] JadenCase 문자열 만들기 / isspace (0) | 2023.03.12 |
[프로그래머스] 행렬의 곱셈 (0) | 2023.03.12 |
[프로그래머스] 뒤에 있는 큰 수 찾기 - Stack (0) | 2023.02.19 |