코딩테스트/💯프로그래머스 코딩테스트 연습

프로그래머스 스킬체크 테스트 Level.2_ 게임대회

1son 2022. 10. 26. 23:16

 

 

👑게임대회가 개최되었습니다. 

 

 

 

일단 어떻게 생각했느냐면,,,

 

숫자를 일단 다 리스트로 집어넣는다. 

12345678 

이거를 두개 단위로 자른다. 

12|34|56|78

이렇게 자르고 

첫번째로 n/2 를 하면 4가 나오고 

 

지역변수로 a,b,c,d를 선언하는 데 각각 n/(1/4), n/(2/4),... 이런 식으로 abcd에 넣어준다. 

그리고 

if( A%2==0) and (a<A<=b)

      A=n%(2/4)

if(B%2==1) and (c<B<=b)

      B=n%(4/4)

n=+=1

 

if (A-B==1 or B-A==1)

return n 

 

이런 형태로 코드를 짜게 되면 

굉장히 비효율 적이겠지만 ...이 테스트 케이스 하나라도 통과하는게 어디냐...

 

좀 더 구체적으로 코드를 작성해본다.

def solution(n,a,b):
    answer = 0
    
    while(1):
        if(a-b==1 or b-a==1):
            return answer
        n=n%2
        aa=n/4
        bb=n/2
        cc=n-aa
        dd=n

        if(a%2==0 and aa<a<=bb):
            a=bb
        if(b%2==1 and cc<b<=dd):
            b=dd
        print(a)
        print(b)
        answer+=1
    
    # [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
    print('Hello Python')

    return answer

 이런 식으로..

 

def solution(n,a,b):
    answer = 0
    
    while(1):
        answer+=1
        if(a-b==1 or b-a==1):
            return answer
        
        aa=n/4
        print(aa)
        print("입니다.")
        bb=n/2
        print(bb)
        print("입니다.")
        cc=n-aa
        print(cc)
        print("입니다.")
        dd=n
        print(dd)
        print("입니다.")

        if(a%2==0 and aa<a<=bb):
            a=n-cc
        if(b%2==1 and cc<b<=dd):
            b=n-bb
        if(b%2==0 and cc<b<=dd):
            b=n-bb
        print(a)
        print(b)
        n=n/2
        print(n)
        print("입니다.")
        if(answer==4):
            return "오답"
            break
    
    # [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
    print('Hello Python')

    return answer

이렇게 코드를 짜게 되면 test1은 통과할 수 있다.

 

코드를 돌려보니 3개나 맞췄다..ㅋㅋㅋ

규칙을 찾으면 더 맞출 수 있을 것 같은데 더 고민해봐야겠다.

 

해당문제 참고