[ BOJ / Python ] 1337번 올바른 배열

황승환·2021년 12월 4일
0

Python

목록 보기
39/498

이번 문제는 2중 for문을 통해 모든 수들을 비교하며 현재 위치의 수 ~ 현재 위치의 수+5 범위 내 수의 갯수를 구하고 현재 위치의 수-5 ~ 현재 위치의 수 범위 내의 수의 갯수를 구하여 더 작은 것을 취하는 방식으로 해결했다.

  • 배열의 크기 n을 입력받는다.
  • 입력받은 수를 담을 nums 배열을 선언한다.
  • 정답을 저장할 answer 변수를 5로 초기화한다. (최대 answer의 수는 4이므로)
  • n만큼 반복하며 nums에 수를 담는다.
  • 0부터 n까지 i에 대한 반복문을 돌린다.
    -> cnt1(현재 위치의 수 ~ 현재 위치의 수+5), cnt2(현재 위치의 수-5 ~ 현재 위치의 수)를 4로 초기화한다.
    -> 0부터 n까지 j에 대한 반복문을 돌린다.
    -> 만약 nums[i]~nums[i]+5 사이에 nums[j]가 포함된다면 cnt1을 1만큼 감소시킨다.
    -> 만약 nums[i]-5~nums[i] 사이에 nums[j]가 포함된다면 cnt2를 1만큼 감소시킨다.
    -> answer를 answer, cnt1, cnt2 중의 최소값으로 갱신한다.
  • answer를 출력한다.

Code

n=int(input())
nums=[]
answer=5
for i in range(n):
    nums.append(int(input()))
for i in range(n):
    cnt1=4
    cnt2=4
    for j in range(n):
        if nums[i]+5>nums[j] and nums[i]<nums[j]:
            cnt1-=1
        elif nums[i]-5<nums[j] and nums[i]>nums[j]:
            cnt2-=1
    answer=min(answer, cnt1, cnt2)
print(answer)

profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글