ice rabbit programming

[LeetCode] May Challenge 1 - First Bad Version 본문

PS/LeetCode

[LeetCode] May Challenge 1 - First Bad Version

판교토끼 2020. 5. 1. 23:18

https://leetcode.com/explore/featured/card/may-leetcoding-challenge/534/week-1-may-1st-may-7th/3316/

 

Explore - LeetCode

LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore.

leetcode.com

4월에 게을러서 하지 않았던 1일 1문제 챌린지를 5월에는 해보려고 한다. 요즘에 계속 하루에 한 두 문제씩 풀었어서..

첫 문제는 false에서 true가 되는 순간을 찾는 문제였다. 기본적인 로직은 맞게 생각했는데 포인터를 두 개 썼으면 더 간단하고 실행 시간을 짧게 풀었을 텐데, 포인터를 하나 사용해서 제대로 풀지 못한 느낌이다 ㅠㅠ

// The API isBadVersion is defined for you.
// bool isBadVersion(int version);

class Solution {
public:
    int firstBadVersion(int n) {
        if(n==1) {
            return 1;
        }
        int temp=n/50*49;
        while(true) {
            if(isBadVersion(temp)) {
                if(!isBadVersion(--temp))
                    return temp+1;
                temp/=5;
                temp*=4;
                if(temp==0) 
                    temp++;
            }
            else {
                if(isBadVersion(++temp))
                    return temp;
                temp++;
                if(temp>n)
                    temp=n;
            }
        }
    }
};