[백준] 2230 수 고르기 (파이썬 python)

2024. 3. 16. 23:12· Algorithm/BOJ
목차
  1. 문제 링크
  2. 문제 풀이
  3. 전체 코드

 

 

문제 링크

 

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

 

2230번: 수 고르기

N개의 정수로 이루어진 수열 A[1], A[2], …, A[N]이 있다. 이 수열에서 두 수를 골랐을 때(같은 수일 수도 있다), 그 차이가 M 이상이면서 제일 작은 경우를 구하는 프로그램을 작성하시오. 예를 들어

www.acmicpc.net

 

 

문제 풀이

 

투 포인터 개념을 활용해야 하는 문제입니다.

해결의 핵심 포인트는 주어진 숫자 배열을 오름차순 정렬한 후,

왼쪽 기준점을 인덱스 1씩 늘려가며 고정하고 오른쪽에 있는 수들과의 차이를 확인하는 것입니다.

오른쪽 기준점은 고정된 왼쪽 기준점과 다르게 1씩 오른쪽으로 이동하며

왼쪽 기준점과의 차이를 확인하는데 사용됩니다.

만약 두 수의 차이가 주어진 m보다 작을 경우 right을 오른쪽으로 옮겨 m 이상의 차이를 도출해내야 합니다.

만약, 두 수의 차이가 m보다 클 경우 현재의 최소 차이값과 비교하여 더 작은 수로 갱신하여 줍니다.

만약 정확히 m만큼 차이가 나는 두 수가 있을 경우 더 확인하지 않고 m을 결괏값으로 갱신하고 중단합니다.

보통 최솟값을 갱신하는 연산을 할 때 초기값을 1e9값으로 두는 경우가 많았으나,

해당 문제에서는 m의 범위가 2,000,000,000까지이므로

해당 범위까지로 초기화해야 정상적으로 답을 도출할 수 있습니다.

 

 

전체 코드

 

n, m = map(int, input().split())
nums = [int(input()) for _ in range(n)]
nums.sort()
left, right = 0, 0
result = 2000000000
while right < n:
    diff = nums[right] - nums[left]
    if diff < m:
        right += 1
    elif diff > m:
        result = min(result, diff)
        left += 1
    else:
        result = m
        break
print(result)
저작자표시 비영리 변경금지 (새창열림)

'Algorithm > BOJ' 카테고리의 다른 글

[백준] 1351 무한 수열 (파이썬 python)  (0) 2024.03.26
[백준] 2457 공주님의 정원 (파이썬 python)  (0) 2024.03.19
[백준] 11659 구간 합 구하기 4 (파이썬 python)  (2) 2024.03.15
[백준] 10026 적록색약 (파이썬 python)  (0) 2024.03.14
[백준] 2573 빙산 (파이썬 python)  (0) 2024.03.14
  1. 문제 링크
  2. 문제 풀이
  3. 전체 코드
'Algorithm/BOJ' 카테고리의 다른 글
  • [백준] 1351 무한 수열 (파이썬 python)
  • [백준] 2457 공주님의 정원 (파이썬 python)
  • [백준] 11659 구간 합 구하기 4 (파이썬 python)
  • [백준] 10026 적록색약 (파이썬 python)
YOONJELLY
YOONJELLY
YOONJELLY
JELLYJELLY
YOONJELLY
전체
오늘
어제
  • 분류 전체보기 (153)
    • Springboot (2)
    • Android (15)
    • Algorithm (126)
      • 개념 (8)
      • BOJ (91)
      • Programmers (15)
      • SWEA (4)
    • 경험_기록 (1)
    • RIM_TIP (4)
    • Github (2)
    • CS (1)
      • 운영체제 (1)
      • 컴퓨터네트워크 (0)
      • 정보처리기사 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • DFS
  • 코딩테스트
  • 문자열
  • Android
  • 큐
  • 액티비티컴포넌트
  • 이진탐색
  • SWEA
  • 백준
  • 정렬
  • BFS
  • kotlin
  • 코틀린
  • 스택
  • 다이나믹프로그래밍
  • 알고리즘
  • 안드로이드
  • softeer
  • 프로그래머스
  • 그리디
  • BOJ
  • 소프티어
  • DP
  • programmers
  • 이것이코딩테스트다
  • 딕셔너리
  • Python
  • 완전탐색
  • 파이썬
  • 자료구조

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
YOONJELLY
[백준] 2230 수 고르기 (파이썬 python)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.