Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬으로 줄에서 가능한 내 위치의 개수 구하기

문제 설명

숫자 n, p, q가 주어진다고 가정해 봅시다. 우리는 n명의 사람들이 줄 서 있는 곳에 서 있습니다. 정확히 몇 번째 위치에 서 있는지는 알 수 없지만, 앞쪽에는 최소 p명이 있고 뒤쪽에는 최대 q명이 있다는 사실은 알고 있습니다. 이때 우리가 설 수 있는 가능한 위치의 개수를 구하는 것이 목표입니다.

예를 들어 입력이 n = 10, p = 3, q = 4라고 해보겠습니다. 총 10명이 있고, 앞에 최소 3명, 뒤에 최대 4명이 있어야 하므로, 우리가 설 수 있는 인덱스는 [0, 1, 2, 3, 4]로 총 5개입니다. 예를 들어 인덱스 0에 서면 앞에 9명, 뒤에 0명이 있게 됩니다.

해결 방법

풀이 방법은 아주 간단합니다. 조건을 만족하는 위치의 개수는 다음 두 값 중 작은 값과 같습니다.

  • 뒤에 최대 q명까지 허용되므로 가능한 위치 수는 최대 q + 1
  • 앞에 최소 p명이 있어야 하므로 가능한 위치 수는 최대 n - p

따라서 min(q + 1, n - p)를 반환하면 됩니다.

구현 예시

class Solution:
   def solve(self, n, p, q):
      return min(q+1, n-p)
ob = Solution()
print(ob.solve(n = 10, p = 2, q = 5))

입력

10, 2, 5

출력

6

정리

이 문제는 복잡한 반복문 없이도 단순한 산술 계산만으로 O(1) 시간 복잡도 안에 해결할 수 있습니다. 핵심은 '뒤쪽 인원 제한'과 '앞쪽 인원 제한'이라는 두 가지 상한값 중 더 작은 값을 택하는 것입니다. 이러한 유형의 문제는 경계 조건(boundary condition)을 명확히 이해하고 있으면 빠르게 접근할 수 있다는 점에서 코딩 테스트에서 자주 등장하는 패턴입니다.