구현 문제[코딩 테스트에 파이썬이 유리한 이유]

구현 문제[코딩 테스트에 파이썬이 유리한 이유]

피지컬로 승부하기

Ps 문제에서 구현(implementation)이란 '머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정' 이다.

우리는 알고리즘 문제를 해결 할 때, 문제를 읽고 풀이를 떠올린다. 하지만 떠올리는 것에 그치지않고 프로그래밍 언어로 정확하게 구현해 내는것까지가 최종 과정이다. 그렇기 때문에 프로그래밍 언어의 문법을 정확히 숙지하고 문제의 요구사항을 지키는 것을 중시해야한다.

흔히 구현 유형의 문제들은 '풀이를 떠올리기는 쉬우나 소스코드로 옮기기 어려운 문제' 를 의미한다.

구현하기 어려운 문제들의 예시로는 알고리즘은 간단한데 지나칠 만큼 길어지는 경우, 특정 소수점 자리까지 출력해야 하는 경우, 문자열이 입력으로 주어질 때 한 문자 단위로 끊어서 리스트에 넣어야 하는(피싱 해야하는) 경우 등이 있다.

또한, 프로그래밍 문법을 정확하게 숙지 하지 않았거나 라이브러리 사용 경험이 부족하면 불리하다.

구현을 알아보기 앞서 아리 두가지 유형의 문제들도 구현의 한 유형이라고 보자.

완전 탐색 : 모든 경우의 수를 주저 없이 다 계산하여 해결하는 방법.

시뮬레이션 : 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접수행 해야하는 방법.

구현 시 고려해야 하는 메모리 제약 사항

C/C++에서 변수의 표현범위

C/C++,자바 등으로 코딩을 할 때 int 자료형을 필수로 이용한다. 하지만 int 자료형의 표현 범위는 절댓값 2,147,483,648을 넘지 않아야 한다. 이보다 큰 수를 처리할려면 BigInteger 클래스를 구현하거나 이용해야 한다.

(파이썬 에서는 직접 자료형을 지정할 필요 없이 매우 큰 수의 연산 또한 기본적으로 지원한다. )

파이썬에서 리스트 크기

여러 개의 변수를 사용할 때는 리스트를 이용한다. 파이썬에서 리스트를 이용할 때에 고려해야 할 사항이 있다. 그것은 메모리 제한이다. 대체로 ps문제는 128~512MB로 메모리를 제한하는데 가끔 수백만개 이상의 데이터를 처리해야 하는 경우가 있다. 이럴 때는 메모리 제한을 염두에 두고 코딩을 해야 한다. 파이썬은 구현 상의 복잡함이 적은 편이지만 데이터 처리량이 많을 때는 꼭 메모리 제한을 고려해야 한다. 리스트를 선언하고 그 중 크기가 1000만 이상인 리스트는 메모리 용량 제한으로 풀 수 없게 된다. (하지만 일반적으로 수천만개의 데이터는 입출력 시간에도 많은 시간이 소요되어 문제가 발생할 수 있어기 때문에 이런 경우는 드물다)

채점환경

보통 구현 유형의 문제는 사소한 입력 조건등을 문제에서 명시해주며, 문제의 길이가 길다. 하지만 고차원적 사고를 요하지 않아 문법에 익숙하기만 하다면 상관없다. 구현 유형은 C/C++이나 자바로 풀때 어려운데 그 이유는 구현 유형에는 문자열을 처리하거나 큰 정수를 처리하는 문제가 많기 때문이다. 반면 파이썬은 기본 문법만 알아도 상대적으로 쉽게 해결 할 수 있다.

구현 난이도 프로그램 실행 시간 파이썬 쉬운 편 긴 편 pypy 쉬운 편 다소 짧은 편 C/C++ 어려운 편 짧은 편

(실무에서는 파이썬을 사용시 연산속도가 빠른 GPU를 연동하고, 반복적인 행렬을 요구하는 복잡한 문제는 C 언어로 작성된 파이썬 코어 소프트웨어가 동작 하므로 실무의 경우는 동작속도가 느리 것은 아니다. 또한 자동 채점 방식을 pypy3로 지원 하는 곳이 늘고있다.)

반면에 C/C++을 이용한다고 해서 구현이 무조건 어려운 것은 아니다. 숙련이 되면 자신만의 코드 노트를 활용할 수 있다. 자신만의 라이브러리가 구축되어 있으면 충분히 쉽게 풀 수 있다.(하지만 고려할 사항이 많아 초심자에겐 어렵다)

API 개발 부분이 구현 유형과 상당히 유사하다. 예를 들어 한 공채에서 API 개발 문제가 출시 되었는데 문제 풀이 서버와 통신하는 프로그램 모듈을 작성해야 했다. 이는 알고리즘과 별개로 웹 서버나 데이터 분석에 대한 기초 지식도 필요하다. 이러한 기능을 구현 시 파이썬은 간결하고 직관적인 코드의 라이브러리를 사용할수 있어 더 유리하다. 파이썬을 사용하면 코딩테스트에서 API개발 문제가 나와도 무난하게 대처할 수 있다.

from http://20210916start.tistory.com/86 by ccl(A) rewrite - 2021-09-28 07:02:18