minjeeki / Algorithm_Seoul_01

12기 서울 1반 알고리즘 스터디
3 stars 1 forks source link

[weekly] 김민지 / 0930 스택수열 #11

Closed minjeeki closed 2 months ago

minjeeki commented 2 months ago

[금요일] '설탕배달' 풀이 요약

후기

minjeeki commented 2 months ago

추가 학습 - 파이썬의 sys 모듈, sys.stdin.readline() 함수

sys 모듈

sys 모듈은 파이썬에서 시스템 관련 기능을 제공하는 표준 라이브러리 중 하나입니다. 이 모듈은 파이썬 인터프리터와 관련된 다양한 기능과 변수를 제공합니다. 주로 스크립트 실행 환경, 입출력, 오류 처리 등을 제어하거나 정보를 얻는 데 사용됩니다.

sys 모듈은 파이썬 인터프리터와 관련된 다양한 기능과 정보를 제공합니다. 표준 입출력 관리, 명령줄 인수 처리, 프로그램 종료, 파이썬 버전 및 플랫폼 정보 확인, 모듈 경로 관리 등 여러 상황에서 유용하게 사용됩니다. 이 모듈을 잘 활용하면 파이썬 프로그램의 제어와 환경 설정을 보다 유연하게 할 수 있습니다.

sys 모듈의 주요 기능 및 변수

  1. 표준 입출력 및 에러 스트림

    • sys.stdin: 표준 입력을 나타냅니다. 기본적으로 키보드 입력을 처리하지만, 다른 입력 소스로 리디렉션할 수 있습니다.
    • sys.stdout: 표준 출력을 나타냅니다. 기본적으로 콘솔에 출력하지만, 파일 등 다른 출력 소스로 리디렉션할 수 있습니다.
    • sys.stderr: 표준 에러 출력을 나타냅니다. 에러 메시지를 출력하는 데 사용되며, 기본적으로 콘솔에 출력됩니다.
  2. 명령줄 인수

    • sys.argv: 스크립트 실행 시 전달된 명령줄 인수를 리스트 형태로 제공합니다. sys.argv[0]는 스크립트 이름이며, 그 이후로는 전달된 인수들이 차례대로 저장됩니다.
  3. 프로그램 종료

    • sys.exit(): 프로그램을 종료할 때 사용합니다. 선택적으로 종료 상태 코드를 인수로 전달할 수 있습니다. 일반적으로 0은 정상 종료를 의미하고, 0이 아닌 값은 에러를 의미합니다.
  4. 파이썬 인터프리터 정보

    • sys.version: 파이썬 인터프리터의 버전 정보를 문자열로 제공합니다.
    • sys.platform: 현재 실행 중인 플랫폼(운영체제)을 나타내는 문자열을 반환합니다.
  5. 모듈 경로 관리

    • sys.path: 파이썬이 모듈을 찾는 경로 목록을 나타냅니다. 새로운 경로를 추가하여 특정 위치에 있는 모듈을 불러올 수 있습니다.
  6. 인터프리터 재귀 한도

    • sys.getrecursionlimit(): 파이썬 인터프리터의 재귀 호출 한도를 반환합니다.
    • sys.setrecursionlimit(limit): 재귀 호출 한도를 설정합니다.
  7. 가비지 컬렉션 제어

    • sys.getrefcount(): 특정 객체의 참조 횟수를 반환합니다. 이 정보는 가비지 컬렉션과 관련된 디버깅에 유용합니다.

      sys.stdin.readline() 함수

사용 케이스

sys.stdin.readline()은 주로 많은 양의 입력을 빠르게 처리해야 할 때 사용됩니다. 특히, 경쟁 프로그래밍이나 대량의 데이터를 입력받아 처리해야 하는 경우에 유용합니다.

input() 함수보다 속도 측면에서 유리한 이유

파이썬에서 입력을 받는 가장 일반적인 방법은 input() 함수를 사용하는 것입니다. 하지만 input() 함수는 입력을 받을 때, 뒤에서 많은 추가 작업을 수행합니다. 예를 들어, 사용자 입력을 기다리면서 프롬프트를 표시하거나, 입력된 문자열을 처리하고 개행 문자(\n)를 제거하는 등 다양한 처리가 포함됩니다.

반면에 sys.stdin.readline()은 이러한 추가 작업이 최소화된 상태로 입력을 받기 때문에, 단순히 표준 입력으로부터 데이터를 빠르게 읽어들일 수 있습니다. 특히, 다음과 같은 이유로 속도 측면에서 유리합니다:

빠른 입력 처리: sys.stdin.readline()은 입력을 받을 때 단순히 버퍼에서 한 줄을 읽어오므로, input()보다 훨씬 빠릅니다. 이는 많은 양의 데이터를 반복적으로 입력받을 때 큰 차이를 만듭니다.

개행 문자 포함: sys.stdin.readline()은 입력된 문자열 끝에 개행 문자(\n)를 포함하여 반환합니다. 이로 인해 추가적인 문자열 처리가 필요 없으며, 특정 상황에서는 이 특성이 유리할 수 있습니다.

입력 데이터의 크기: 대량의 데이터를 처리할 때 input()보다 더 효율적으로 동작합니다. 예를 들어, 수천 줄의 데이터를 빠르게 입력받아 처리해야 하는 경우에 sys.stdin.readline()은 더 좋은 성능을 제공합니다.