프로그래밍 언어/Python

Python 코딩테스트 준비하기

트리맨스 2022. 10. 14. 01:37
반응형


파이썬 코딩테스트도 준비해야 해서 vscode로 코딩테스트에 최적화된 환경을 만들어 볼려고 한다. 앞에서 작성한 JS 코딩테스트 준비 과정이랑 많이 유사하다.
https://tre2man.tistory.com/314

JS 코딩테스트 준비하기

최근에 코딩테스트를 보면서 알고리즘이 말도 안되게 부족하다는 것을 많이 느꼈다. 그래서 외부 에디터를 사용할 수 있는 환경이라는 상황에서 코딩 결과물을 빠르게 확인할 수 있는 환경을

tre2man.tistory.com


Python 코딩테스트 환경 꾸미기


코딩테스트는 역시 빠르게 결과물을 내는 것이다. 여기서도 nodemon을 사용할 것이다. 아니 잠깐, nodemon은 nodejs에서 사용하는 프로그램 아닌가요? 할 수가 있는데, npm으로 관리되는 프로그램이라 파이썬 프로그램 실행과는 상관이 없다. 먼저 임의의 폴더 생성 후, 아래 명령어를 입력한다.

npm init
npm i nodemon

바로 package.json 파일에 스크립트를 하나 추가한다.

...
  "scripts": {
    "nodemon": "npx nodemon --exec python3 ./main.py"
  },
...

이후 main.py 파일을 만들고 아무거나 작성후 yarn nodemon을 입력하게 되면, 파이썬 파일이 변경될 때 마다 알아서 새로고침된다. 위에 있는 JS 코딩테스트 준비하기 글에 있는 것과 같이 실행이 되며, 설명이 부족한 부분이 설명이 되어 있을 수도 있다.

다음으로는 많이 쓰는Python 스킬을 정리해보자.

알아두면 좋은 잡지식


테스트 값 바로 사용하기

def solution(x, y):
    print(x, y)
    return x + y


if __name__ == "__main__":
    datas = [
        {
            "x": 1,
            "y": 2,
        },
    ]
    for data in datas:
        print(solution(data["x"], data["y"]))

배열 미리 정의하기

arr = [0 for i in range(n)] # 모든 원소가 0이고 길이가 3인 배열 
arr1 = [[0] * col for _ in range(row)] # 가로가 col, 세로가 row의 길이를 가지는 2차원 배열 생성

스택, 큐, 우선순위 큐

from queue import Queue, PriorityQueue

q = Queue() # 큐 선언
stack = [] # 스택은 배열로 구현 가능
pq = PriorityQueue() # 우선순위큐 선언

진수 변환

# n진수 -> 10진수
int('101', 2) # 101(2) -> 20(10)
int('ACF', 16) # ACF(16) -> 2767(16)

# 10진수 -> n진수
bin(11) # 0b1011
hex(11) # 0xb

집합, 집합의 연산

set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}

print(set1 & set2) # 교집합
print(set1 | set2) # 합집합
print(set1 - set2) # 차집합 (set1 - set2)
print(set2 - set1) # 차집합 (set2 - set1)

딕셔너리 정렬, 딕셔러니 배열 정렬

나는 JS를 주로 하다 와서 json과 비슷한 dict 자료형이 익숙했다.

dict = {
    "a": 1,
    "b": 2,
    "c": 3,
    "d": 4,
}

sorted_dict = sorted(dict.items(), key=lambda x: x[1], reverse=True)

위 코드는 value값을 기준으로 정렬한 것이고, key값을 기준으로 정리하고 싶으면 x[1] -> x[0] 으로 변경하자.

배열 내부에 여러 타입의 원소들이 있을 경우 (어떤 타입이 있을지는 모르나, 모든 원소들의 타입은 같다고 가정한다.)

datas = [
    {
        "priorities": [2, 1, 3, 2],
        "location": 2,
    },
    {
        "priorities": [1, 1, 9, 1, 1, 1],
        "location": 0
    },
    {
        "priorities": [4, 3, 2, 1],
        "location": 3
    },
]

datas.sort(key=lambda x: x["location"])
print(datas)

위 코드의 결과는 location을 기준으로 정렬된 데이터가 나오게 된다. 람다 함수 짱짱맨

내용은 주기적으로 계속 추가할 예정이다. 파이썬을 오랜만에 펼치니, 뭔가 생각해서 코딩을 하는 느낌이 아니라 누가누가 라이브러리를 더 많이 알고 있느냐의 차이 같아서 약간 막막해진다.

반응형