문제 링크

문제 설명

예시

[input]
4
2 10 8 40

[output]
2

[input]
4
5 13 8 1000000000

[output]
1

[input]
3
1000000000 1000000000 1000000000

[output]
1000000000

사고의 흐름

모범답안

1. 여기를 누르면 답이 보입니다
def answer(arr):
  n = len(arr)
  if n == 1: return arr[0]
  count: { 'odd': 0, 'even': 0 }
  _min = min(arr)
  전부나눠떨어진다 = True
  for i in range(n):
    if arr[i]%_min:
      전부나눠떨어진다 = False
    if arr[i]%2 == 0: count['even'] += 1
    else: count['odd'] += 1
      
  if 전부나눠떨어진다: return _min
  
  # 홀짝
  if count['odd'] > 0 and count['even'] > 0: return 1
  
  # 홀홀
  if count['odd'] > 0 and count['even'] == 0: return 1
  
  # 짝짝
  if count['odd'] == 0 and count['even'] > 0: return 2
  

n = int(input())
arr = list(map(int, input().split()))
print(answer(arr))
2. 여기를 누르면 답이 보입니다