Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬이 경쟁 코딩에 가장 적합한 이유

<시간/>

경쟁 프로그래밍은 일반적으로 적절한 데이터 구조를 사용하여 효율적인 알고리즘을 사용하기 위한 코딩이라고 합니다. 여러 수준에서 프로그래머의 기술을 테스트합니다.

알고리즘과 데이터 구조의 도움으로 다양한 논리를 적용하여 가상 프로그래밍 문제를 해결해야 합니다. 문제를 해결해야 할 뿐만 아니라 시간과 공간의 복잡성이 좋은 매우 효율적인 솔루션을 찾아야 합니다.

경쟁 프로그래밍이라고 하는 문제 설명의 예는 다음과 같습니다. -

소문자 라틴 문자로만 구성된 길이가 n인 문자열 s가 제공됩니다.

문자열의 하위 문자열은 해당 문자열의 연속 하위 시퀀스입니다. 따라서 문자열 "force"는 문자열 "codeforces"의 하위 문자열이지만 문자열 "coder"는 그렇지 않습니다.

당신의 임무는 남아 있는 모든 문자가 같도록 이 문자열에서 정확히 하나의 부분 문자열을 제거하는 방법의 수를 계산하는 것입니다(고유한 문자의 수는 0 또는 1).

s에 최소 두 개의 다른 문자가 있는 것이 보장됩니다.

전체 문자열을 제거할 수 있으며 정확합니다. 또한 하나 이상의 문자를 제거해야 합니다.

위의 문제를 해결하기 위해 원하는 프로그래밍 언어를 사용할 수 있습니다.

이제 경쟁 코딩을 위해 파이썬을 사용하는 이유에 대한 질문이 생깁니다.

속도

python을 선택하는 이유 중 하나는 코드 작성에 소요되는 시간을 획기적으로 단축하는 대신 질문에 필요한 논리에 대해 생각하는 데 시간을 할애하기 때문입니다.

이런 종류의 경쟁에서는 시간이 핵심이기 때문에 프로그래머가 솔루션을 더 빨리 작성할 수 있을수록 더 좋습니다. 따라서 위의 속도는 파이썬 언어 속도가 아니라 프로그래머가 솔루션을 작성하는 속도를 의미합니다.

매우 다양한 라이브러리

Python은 매우 다양한 표준 라이브러리와 함께 제공되며 이러한 라이브러리는 경쟁 프로그래밍에서 매우 잘 활용될 수 있습니다.

다음은 경쟁 코딩을 위해 Python을 선택하는 다른 일반적인 이유 목록입니다. −

i.일반적인 내장 기능:

  • Python은 count, min, max, sorted 등과 같은 많은 공통 함수 세트를 제공합니다. 이러한 내장 함수는 매우 편리하며 코더가 쉽게 진행할 수 있고 종종 매우 유용한 이러한 사소한 절차에 대한 코드 작성을 건너뛸 수 있습니다. 또한 파이썬 함수는 함수에 가장 적합한 알고리즘을 사용합니다. 예를 들어, sorted() 함수는 O(nlogn)의 최악의 경우 성능에서 안정적인 정렬을 제공하는 Timsort 알고리즘을 사용합니다. 이것은 O(1)의 최상의 실행 시간 또는 일정한 실행 시간을 제공하는 최고의 정렬 알고리즘 중 하나입니다.

코드

#abs()
print(abs(-7))
#max()
print(max(2, 13, 4, 20))
#memoryview()
print(memoryview(bytes(9)))
#object()
o = object();print(type(o))
#pow()
print(pow(2,6))
#reversed
a = reversed([3, 13, 2, 1]); print(a)
#sorted()
print(sorted([9, 2, 4, 13, 7]))
#sum()
print(sum([2, 9, 12, 19]))
# type()
print (type([]))
print (type({}))
#zip()
print(set(zip([1,2],[3,4,5])))

ii. 목록 이해

  • Python은 최고의 목록 이해 도구 ​​중 하나를 제공합니다. 일반적으로 한 줄에 5-20줄이 필요한 코드를 작성할 수 있습니다. 목록 이해를 사용하면 중첩된 루프 및 조건을 가질 수 있습니다.

코드

# Iterating through a string Using List Comprehension
l_string = [ letter for letter in 'Tutorialspoint' ]
print( l_string)
#List Comprehensions vs Lambda functions
l_lambda = list(map(lambda x: x, 'Tutorialspoint'))
print(l_lambda)

출력

['T', 'u', 't', 'o', 'r', 'i', 'a', 'l', 's', 'p', 'o', 'i', 'n', 't']
['T', 'u', 't', 'o', 'r', 'i', 'a', 'l', 's', 'p', 'o', 'i', 'n', 't']

iii.표준 라이브러리(큰 장점)

  • Python은 광범위한 기능을 제공하는 매우 광범위한 표준 라이브러리와 함께 제공됩니다. 이러한 라이브러리에는 수동으로 구현할 필요가 없는 여러 데이터 구조와 라이브러리의 매우 중요한 부분인 itertools가 함께 제공됩니다.
  • 예를 들어, itertools의 목록 이해 및 순열 기능을 사용하여 목록의 가능한 모든 순열을 생성하고 다른 단일 목록에 저장하려고 합니다.

파이썬 표준 라이브러리

데이터 유형
문자열
네트워킹
스레드
운영 체제
압축
GUI
인수
CG
복소수
FTP
암호화
테스트
멀티미디어
데이터베이스
CSV 파일
캘린더
이메일
XML
직렬화

iv.다양한 데이터 구조

  • Python은 표준 패키지로 제공되는 사전, 집합, 튜플, 목록 및 기타 많은 항목을 포함하여 코딩에 사용할 대규모 데이터 구조 집합을 제공합니다.

파이썬이 경쟁 코딩에 가장 적합한 이유

v.사용 용이성

Python 구문은 사람이 읽을 수 있으며 Python으로 코딩하는 것은 매우 쉽고 빠릅니다. 기본적으로 의사 코드처럼 읽힙니다.

>>> print("hello world!")
hello world!
>>> sum([3, 4, 3,5])
15
>>> max(3, 4, 5, 13,2)
13
>>> min(3, 4, 5, 13, 2)
2