[Python] BinarySearch(문제사이트) - Task Hare, Maximum Number by Inserting Five, 123 Number Flip

ossap·2021년 12월 17일

3회차

문제
1. Task Hare
2. Maximum Number by Inserting Five
3. 123 Number Flip
4. Social Distancing

오늘 처음으로 시간내에 1개는 속도 1ms로 풀고, 나머지 한문제도 90%정도 풀었다..! 점점 늘고 있는게 느껴져서 너무 기분이 좋다.

  • 오늘 Flag의 개념에 대해 배웠다.
    Flag기능은 For문 내에서 반복을 다 돌고나서도 조건이 만족되지않아 그냥 빠져나온 경우, Boolean인 Flag 변수를 줘서 그 이후에 어떻게 할 것인지 행동을 정해주는 것이다!
    (예시 : 변화 전 - Flag = False, 변화 후 - Flag = True)
  • 파이썬에서는 Flag 대신 For, Else 구문으로 쓰기도하지만 차이점이 있다.
    Flag + break : 변화가 일어났을때 멈추고 싶다면, Flag 값을 바꾼뒤에 Break로 빠져나온다.
    For, Else : 중간에 멈추지않고 For문이 다 돌고 Else 구문으로 넘어간다.

1. Task Hare

이 문제... 정말 날 너무 힘들게한다.. 지금 푼 문제들 중 가장 오래걸림.. 엣지케이스가 너무 많아요..
하지만.. 내가 이길 것이다..! 풀고 만다!

  • 🙋‍♀️ 내 코드 (진행중)
class Solution:
    def solve(self, n):
        n = str(n)
        num = []
        for i in range(len(n)):
            num.append(n[i])
        if num[0] == '-':
            flag = False
            for i in range(1,len(num)):
                if int(num[i])>5 :
                    num.insert(num.index(num[i]), 5)
                    flag = True
                    break
            if flag == False :
                num.append(5)

            num = ''.join(map(str,num[1:]))
            return(-int(num))
        else :
            flag = False
            for i in range(len(num)):
                if int(num[i])<5 :
                    num.insert(num.index(num[i]), 5)
                    flag = True
                    break
            if flag == False : 
                num.insert(num[-1],5)
            num = ''.join(map(str,num))
            return(int(num))
        

2. Maximum Number by Inserting Five

  • 🙋‍♀️ 내 코드
class Solution:
    def solve(self, n):
        n = str(n)
        num = []
        for i in range(len(n)):
            num.append(int(n[i]))
        for i in range(len(n)):
            if num[i]<3 :
                num[i] = 3
                break
        num = ''.join(map(str,num))   
        return(int(num))

3. 123 Number Flip

96%의 속도로 처음 푼 문제!(뿌듯)😎

  • 🙋‍♀️ 내 코드
class Solution:
    def solve(self, n):
        n = str(n)
        num = []
        for i in range(len(n)):
            num.append(int(n[i]))
        for i in range(len(n)):
            if num[i]<3 :
                num[i] = 3
                break
        num = ''.join(map(str,num))   
        return(int(num))

profile
오삽 : 오늘도 삽질

0개의 댓글