본문 바로가기
코딩테스트

[Python] 백준 1337번 - '올바른 배열' 풀이

by CuckooBird 2023. 1. 20.

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

 

1337번: 올바른 배열

첫째 줄에 배열의 크기 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 배열의 원소가 한 줄에 하나씩 주어진다. 원소는 1,000,000,000보다 작거나 같은 음이 아닌 정수이

www.acmicpc.net


코드

import sys
n = int(sys.stdin.readline().rstrip())
arr = []
for i in range(n):
    arr.append(int(sys.stdin.readline().rstrip()))
arr.sort()
ans = 4
for i in range(n):
    temp = 0
    for j in range(arr[i], arr[i] + 5):
        if j not in arr:
            temp += 1
    if ans > temp:
        ans = temp
print(ans)

arr를 정렬한 후에 arr[i]에서 arr[i]+5 까지의 수가 arr에 모두 들어있는지 확인하고 없다면 temp에 1씩 더해줍니다. 후에 4가 저장 되어있는 ans와 비교하여 더 작은 값을 출력합니다.


후기

처음에는 이중for문 j의 범위를 i+1에서 n까지 줘서 arr[i]와 arr[j] 값을 비교하는 방식을 이용했는데 성공이 안 나오더라고요. 그래서 구글링 해서 더 쉬운 방법을 배웠습니다.

처음 짠 코드