프로그래밍/알고리즘

(백준) - 분산처리 (Python3) (해설없음)

레인보우떡 2022. 6. 29. 22:30

뭐지 이 쉬운 문제는?

n = int(input())
for _ in range(n):
    a,b = map(int, input().split())
    print(a**b % 10)

스윽

시간초과

 

그래서 검색검색

n = int(input())
for _ in range(n):
    a, b = map(int, input().split())
    if a % 10 in [1, 5, 6]:  # 패턴 1개
        print(a)
    elif a % 10 == 0:
        print(10)
    elif a % 10 in [4, 9]:  # 패턴 2개
        if b % 2 != 0:  # 홀수
            print(a)
        else:
            if a % 10 == 4:
                print(6)
            elif a % 10 == 9:
                print(1)
    elif a % 10 in [2, 3, 7, 8]:
        if b % 4 == 0:
            print(a ** 4 % 10)
        elif b % 4 == 1:
            print(a ** 1 % 10)
        elif b % 4 == 2:
            print(a ** 2 % 10)
        elif b % 4 == 3:
            print(a ** 3 % 10)

1~10 의 제곱수의 일의 자리 패턴이 각각 있다는 사실을 확인하고 각 수에 맞는 부분들을 일일이 기입.. 무식.. 안이쁨..

 

뭔가 오히려 일을 하기 전에 알고리즘을 잘 풀었던 것 같다는 생각이다..

코드가 중복이 있던 없던 막 짜서 되기만 하면 된다고 생각했었으니까..

지금은 모든 것이 어설프게 습득되어 있는 상태라 혼란 그 자체다

 

아무튼

안되가지고 다른 코드 참조 후 작성한 코드다

n = int(input())
for _ in range(n):
    a, b = map(int, input().split())
    b = b % 4
    if b == 0:
        b = 4
    a = (a**b) % 10
    if a == 0:
        print(10)
    else:
        print(a)

 

 

 

 

알고리즘 공부방법을 바꿔야겠다.

 

다른 분들의 공부방법들을 보니, 문제를 일정시간동안 보고 진도가 나가지 않으면 다른분들의 풀이를 보고 구현, 안되면 다시 보고 보고보고.. 

하는 거였다.

 

나는 무조건 내 머리힘으로만 풀어야된다고 생각해서 몇 시간동안 붙잡다가 힌트보고 다시하고 힌트보고 결국 안되서 다른분들 풀이보고..이랬는데

 

안되는거 붙잡고 있어봤자 안된다는 걸 잊었던 모양.

 

나도 일정시간 동안 안되면 바로 풀이를 보고 '습득' 을 해야겠다.

 

알고리즘은.. 머리가 좋으면 무슨 문제든 풀 수 있는 줄 알았는데.. 사전지식이 필요한 것 같다.. 이제와보니 당연해보이는구나

허.허.허.

 

 

 

 

728x90