LeetCode 문제 풀이
[LeetCode] 1318번 Minimum Flips to Make a OR b Equal to c 문제를 풀어보았다. (ft. java)
pantrom
2023. 6. 7. 22:40
2023년 06월 07일 수요일 - 으어 오랜만에 회사가니깐 너무 힘들어..
오늘 올려볼 문제는 1318번 Minimum Flips to Make a OR b Equal to c 이라는 문제이다.
사진을 클릭하면 해당 문제로 이동합니다.
오늘도 LeetCode 사이트 오늘의 문제를 가지고 왔다.
생각보다 쉽게 풀림
입력
사진에서도 볼 수 있듯이 int 값 3개가 입력으로 들어온다.
풀이 및 코드
a와 b를 or 연산했을 때 c를 만들기 위해서 a와 b의 비트를 뒤집을 때 가장 적게 뒤집는 수를 구하는 문제이다.
오늘은 처음부터 정답을 생각해냈다.
어차피 or 연산이므로 각자리의 비트가 다른 자리의 비트에 영향을 주지 못한다.
즉 맨 끝의 비트만 비교하면서 뒤집을 개수를 구하는 식으로 문제를 풀었다.
이제 코드를 봐보자!
풀이코드
class Solution {
public int minFlips(int a, int b, int c) {
int result = 0;
while(a > 0 || b > 0 || c > 0) {
int ar = a % 2, br = b % 2, cr = c % 2;
a >>= 1; b >>= 1; c >>= 1;
if(cr == (ar | br)) continue;
if(cr == 1) result++;
else result += ar + br;
}
return result;
}
}
제출 화면
자꾸 블로그 쓰는걸 까먹는거 같다.
요즘따라 집에서 놀기만 하고 싶어진달까나?
내일도 문제를 풀어서 블로그에 글을 쓸 수 있으면 좋겠다.