BAEKJOON #1337 올바른 배열

2020. 3. 23. 21:24개발노트

이 문제의 저작권은 BAEKJOON에 있습니다.

 

https://www.acmicpc.net/problem/1337

문제는 위 링크에서 확인할 수 있습니다.

 

#올바른 배열
#https://www.acmicpc.net/problem/1337

N = int(input())

arr = [int(input()) for _ in range(N)]
arr = sorted(arr)
temp = []
for i in range(0, N):
  cnt = 0
  for j in range(arr[i], arr[i]+5):
    if j not in arr:
      cnt += 1
  temp.append(cnt)
print(min(temp))

어렵게 접근했다가 푸는데 시간이 좀 걸렸는데..

문제에 있는 그대로 숫자 5개가 순서대로 있는지 확인하면 되는 문제입니다.

주어진 숫자들을 배열에 넣고 정렬합니다.

그리고 순서대로 배열의 요소를 선택하고 그 요소부터 순서대로 5개의 요소가 이어져있는지 확인하면 됩니다.

 

예를 들면 배열[3, 4, 5] 가 주어졌을 때

선택된 요소가 3일 때 for문 3, 4, 5, 6, 7 배열에 없는 나머지 6, 7
선택된 요소가 4일 때 for문 4, 5, 6, 7, 8 배열에 없는 나머지 6, 7, 8
선택된 요소가 5일 때 for문 5, 6, 7, 8, 9 배열에 없는 나머지 6, 7, 8, 9

 나머지 개수들을 temp배열에 넣고 가장 작은 것을 찾아서 답을 구했습니다.