ABOUT ME

-

Today
-
Yesterday
-
Total
-
choco@desktop:~/tistory
$ 정보처리기사 요점정리
1과목 2과목 3과목 4과목 5과목 실기

$ Linux Kernel
Power Management DVFS
  • 왜 파이썬은 0<= 숫자 인덱스 < n 을 사용할까?
    자료구조&알고리즘 2019. 1. 9. 10:28

    출처 알고리즘 책 1권 52페이지


    숫자 인덱스

    - 대부분의 프로그래밍 언어에서 n개의 원소를 갖는 배열 a의 첫번째 원소는 a[0]이고, 마지막 원소는 a[n-1]입니다. 따라서 a의 인덱스 i의 범위는 0<= i < n 입니다.

    - C++ STL에서는 반복자로 범위를 표현할 때 첫 원소를 가리키는 반복자와 마지막 원소 다음 위치를 가리키는 반복자를 사용합니다. 예를 들어, STL 자료구조에서 모든 원소를 갖는 범위는 begin(), end()로 표현하는데, begin()은 첫 번째 원소를 가리키지만 end()는 마지막 원소가 아니라 마지막 원소 다음에 있는 가상의 원소를 가리킵니다.

    - 자바의 SortedSet 인터페이스는 범위를 fromElement와 toElement로 전달받는데, fromElement는 범위에 포함되지만 toElement는 포함되지 않습니다.

    - 파이썬에서는 배열의 일부를 a[4:8]과 같은 문법으로 잘라낼 수 있는데, 이렇게 잘라내면 a[4] 부터 a[7]까지를 포함하는 부분 배열을 만들 수 있습니다. 


    위와 같은 인덱스 범위의 장점

    이러한 선택에는 분명한 장점이 있습니다. 


    - 첫번째 값과 마지막 값이 같은 구간을 이용하면 텅 빈 구간을 쉽게 표현할 수 있습니다. [2, 2) 로 표현된 반 열린 구간은 2<= i <2 인 모든 i를 포함하므로 공집합이 됩니다.

    - 두 구간이 연속해 있는지를 쉽게 알 수 있습니다. 두 구간 [a, b)와 [c, d)가 연속해있는지를 보려면 b=c혹은 a=d인지만 확인하면 됩니다.

    - 구간의 크기를 쉽게 할 수 있습니다. [a, b)로 표현된 구간에 포함된 자연수의 수는 b-a가 됩니다.


    출처

    https://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html


    숫자 인덱스 범위를 0<=n <n으로 사용하는 이유

    - 전체 숫자의 개수가 좌우 수를 뺀 값과 똑같다.

    The observation that conventions a) and b) have the advantage that the difference between the bounds as mentioned equals the length of the subsequence is valid.

    - 가장 작게 시작하는 숫자를 자연수가 아닌 수로 하면 보기에 좋지 않다/ 자연스럽지 않다.

    Exclusion of the lower bound —as in b) and d)— forces for a subsequence starting at the smallest natural number the lower bound as mentioned into the realm of the unnatural numbers. That is ugly, so for the lower bound we prefer the ≤ as in a) and c).

    - 상한선 숫자가 포함되면 전체 숫자 범위를 줄일 때 자연스럽지 않다.

    inclusion of the upper bound would then force the latter to be unnatural by the time the sequence has shrunk to the empty one.

    댓글

Designed by Tistory.