input & itertools.accumulate 함수 알아보기

2025. 8. 18. 13:46·프로그래밍 언어/파이썬

input() 함수 소개

input()은 Python의 기본 내장 함수로, 사용자로부터 표준 입력(Standard Input)을 받아 문자열 형태로 반환합니다. input() 함수는 사용자가 Enter 키를 누를 때까지 입력을 기다립니다.

  • 사용법: input("프롬프트 메시지")
  • 특징:
    • 입력받은 모든 데이터를 문자열(str)\로 처리합니다. 숫자를 입력하더라도 문자열로 인식하기 때문에, 산술 연산을 위해서는 int()나 float() 등으로 형 변환이 필요합니다.
    • 프롬프트 메시지를 인자로 전달하여 사용자에게 입력받을 내용을 안내할 수 있습니다.
    • 코딩 테스트 환경에서는 대량의 데이터를 빠르게 읽어와야 할 때가 많으므로, input() 대신 더 빠른 sys.stdin.readline()을 사용하는 것이 일반적입니다.

동일 기능/대체 함수:

  • sys.stdin.readline(): sys 모듈에 있는 함수로, 한 줄을 읽어와 문자열로 반환합니다. input()보다 훨씬 빠르기 때문에 경쟁적 프로그래밍(competitive programming)에서 자주 사용됩니다. 사용하려면 import sys가 필요합니다.

itertools.accumulate() 함수 소개

itertools.accumulate()는 iterable(반복 가능한 객체)의 요소들을 순차적으로 누적하여 결과를 반환하는 함수입니다. 주로 누적 합을 계산하는 데 사용되지만, 다른 함수를 적용하여 누적 곱, 누적 최댓값 등 다양한 연산을 수행할 수 있습니다. itertools 모듈에 포함되어 있어 import가 필요합니다.

  • 사용법: itertools.accumulate(iterable, func=operator.add)
  • 특징:
    • 결과를 이터레이터(iterator) 객체로 반환하므로, list() 등으로 형 변환해야 결과를 확인할 수 있습니다.
    • func 인자를 통해 누적 연산을 커스터마이징할 수 있습니다. 기본값은 operator.add로, 덧셈을 수행합니다.
    • C로 구현되어 있어 파이썬의 for 루프보다 약간 더 빠를 수 있으며, 코드를 간결하게 만들어 줍니다.

동일 기능/대체 함수 (직접 구현):

  • for 루프를 이용한 누적 계산: itertools.accumulate()와 동일한 기능을 직접 구현할 수 있습니다. 이는 개념을 이해하는 데 도움이 됩니다.
    def my_accumulate(iterable):
        total = 0
        for item in iterable:
            total += item
            yield total
    위 코드는 itertools.accumulate()와 유사하게 제너레이터(generator)를 사용하여 누적 합을 반환합니다. 이처럼 직접 구현한 함수는 itertools 모듈을 가져오지 않고도 동일한 로직을 사용할 수 있습니다.
저작자표시 (새창열림)

'프로그래밍 언어 > 파이썬' 카테고리의 다른 글

Celery와 FastAPI - 8  (0) 2024.03.27
Celery와 FastAPI - 7  (1) 2024.03.26
Celery와 FastAPI - 6  (1) 2024.03.24
Celery와 FastAPI - 5  (1) 2024.03.24
Celery와 FastAPI - 4  (0) 2024.03.24
'프로그래밍 언어/파이썬' 카테고리의 다른 글
  • Celery와 FastAPI - 8
  • Celery와 FastAPI - 7
  • Celery와 FastAPI - 6
  • Celery와 FastAPI - 5
hyeseong-dev
hyeseong-dev
안녕하세요. 백엔드 개발자 이혜성입니다.
  • hyeseong-dev
    어제 오늘 그리고 내일
    hyeseong-dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (283)
      • 여러가지 (108)
        • 알고리즘 & 자료구조 (73)
        • 오류 (4)
        • 이것저것 (29)
        • 일기 (1)
      • 프레임워크 (39)
        • 자바 스프링 (39)
        • React Native (0)
      • 프로그래밍 언어 (39)
        • 파이썬 (31)
        • 자바 (3)
        • 스프링부트 (5)
      • 컴퓨터 구조와 운영체제 (3)
      • DB (17)
        • SQL (0)
        • Redis (17)
      • 클라우드 컴퓨팅 (2)
        • 도커 (2)
        • AWS (0)
      • 스케쥴 (65)
        • 세미나 (0)
        • 수료 (0)
        • 스터디 (24)
        • 시험 (41)
      • 트러블슈팅 (1)
      • 자격증 (0)
        • 정보처리기사 (0)
      • 재태크 (0)
        • 암호화폐 (0)
        • 기타 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Spring WebFlux
    celery
    시험
    자바
    항해99
    OOP
    취업리부트
    Python
    완전탐색
    DP
    FastAPI
    Redis
    RDS
    EC2
    AWS
    백준
    reactor
    Spring Boot
    mybatis
    ecs
    #개발자포트폴리오 #개발자이력서 #개발자취업 #개발자취준 #코딩테스트 #항해99 #취리코 #취업리부트코스
    프로그래머스
    java
    SAA
    docker
    WebFlux
    spring
    그리디
    Docker-compose
    파이썬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hyeseong-dev
input & itertools.accumulate 함수 알아보기
상단으로

티스토리툴바