1일 1PS 39일차!

📚 문제


골드 3

  • 많은 분기를 빠짐없이 처리해야한다.

💡 풀이 과정


  1. N = 1 일 때, N = 2 이면서 값이 동일할 때, N = 2 이면서 값이 동일하지 않을 때, N = 3 이상이면서 값이 모두 동일할 때, N = 3 이상이면서 값이 모두 다르고 규칙이 동일할 때, N = 3 이상이면서 값이 모두 다르지만 규칙이 동일하지 않을 때. 로 구분지어야한다.
  2. N = 1 일때는 항상 A 가 출력되어야한다.
  3. N = 2 이며 값이 동일할 경우 동일한 값이 출력되어야한다.
  4. N = 2 이며 값이 동일하지 않을 경우 A 가 출력되어야한다.
  5. N = 3 이상이며 값이 동일할 경우 동일한 값을 출력해야한다.
  6. N = 3 이상이며 값이 동일하지 않을 경우 규칙을 판단해서 출력해야한다.
  7. 이때 일차방정식을 사용해 A, B 의 값을 얻어 마지막까지 동일한 규칙인지 확인하고 다음 수 혹은 B 를 출력한다.

📌포인트


  • len(set(num_list))
    • num_list 속의 값들이 모두 동일함을 확인하기 위해서 모든 값을 비교하지 않고 Set 을 통해 확인한다.

💻 코드



N = int(input())

if N == 1:
    print("A")
elif N == 2:
    num1, num2 = map(int, input().split())
    if num1 == num2:
        print(num1)
    else:
        print("A")
else:
    num_list = list(map(int, input().split()))
    if num_list[0] == num_list[1]:
        if len(set(num_list)) == 1:
            print(num_list[0])
        else:
            print("B")
    else:
        A = (num_list[2] - num_list[1]) //(num_list[1] - num_list[0])
        B = (num_list[1] - A * num_list[0])
        flag = True
        for i in range(1, N - 1):
            if num_list[i] * A + B != num_list[i+1]:
                flag = False
                break

        if flag:
            print(num_list[N-1] * A + B)
        else:
            print("B")

업데이트:

댓글남기기