2023년 06월 07일 수요일 - 으어 오랜만에 회사가니깐 너무 힘들어..


오늘 올려볼 문제는 1318번 Minimum Flips to Make a OR b Equal to c 이라는 문제이다.


사진을 클릭하면 해당 문제로 이동합니다.

leetcode 문제 사진

오늘도 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;
    }
}




제출 화면

leetcode 문제 맞았습니다


자꾸 블로그 쓰는걸 까먹는거 같다.

요즘따라 집에서 놀기만 하고 싶어진달까나?


내일도 문제를 풀어서 블로그에 글을 쓸 수 있으면 좋겠다.

+ Recent posts