<meta charset="UTF-8"><meta name="viewport" content="width=device-width initial-scale=1"> <title>PS를 여행하는 파이썬 사용자를 위한 안내서</title>

아 진짜 게시판 조무사 디씨야 HTML에서 CSS 넣어서 쓰니 다 깨져 나오네.


이 내용을 티스토리 블로그에 정리하는 게 사람들이 보기 쉬울까 아니면 GitHub Wiki 같은 데가 좋을까

PS를 여행하는 파이썬 사용자를 위한 안내서

일단 글을 쓰는 저 부터가 쪼렙인 걸 밝힙니다. 이 글이 언제 다 완성 될지도 모르고, 제가 문제 풀이에 필요한 지식을 다 쌓는 데 얼마나 걸릴지 모르기잔 작은 지식이라도 나누는게 도움이 될 것 같아서 이렇게 씁니다.

부족한 내용, 틀린 내용, 모자란 내용 있으면 말해주시면 감사하겠습니다. 내용만이 아니라 구성이나 편집에 대한 지적도 환영합니다.

0. 이 글을 읽기 전에
  1. 구글링을 생활화 하고 영어에 익숙해집시다.

  2. Python doc 을 즐겨찾기에 저장하고 모르는 함수가 나오면 검색해서 읽어 봅시다. 다른 언어에 없는 기능 같은 것에 대한 이해가 높아집니다.

  3. 많이 찾아 봅시다. 읽어 봅시다.

    지금은 이해 못해도 나중가면 한번 쯤은 쓸 수도 있어요.

    1. 내 마음대로 선정한 프로그래머 필독서 50선(20180827) : 좋은 책이 많아요. 이 분은 한국 번역 질이나 얼마나 구하기 싶냐 같은 것도 반영하셔서 리스트를 뽑으시니 구하는 데 큰 어려움이 있지는 않을 거예요.
    2. Python Tricks 101: 파이썬다운 여러 예시 입니다. 근데 이 중에 몇개는 느린 코드가 있으니 잘 사용해야 합니다.
    3. 점프 투 파이썬: 인터넷에서 구할 수 있는 파이썬 한글 관련 자료 중에 가장 정리가 잘된 자료 중 하나입니다. 파이썬의 기본적인 내용을 모르시거나 처음 프로그래밍을 접하신 경우 이 내용을 한 번 읽어보세요.

1. 코드를 짜기 전에

저희가 짜는 코드의 목적은 시간 내에 문제를 알맞게 푸는 것입니다. 저희가 생각한 알고리즘을 짜서 돌릴려 해도, 언어 내부에서 구현이 느리게 되어 있거나 생각하는 방법이나 다르게 되어 있어서 작동 안 할 수 있어요. 백준 온라인 저지에 있는 글인 BOJ101을 읽어 봅시다. 기초적인 실수를 방지 할 수 있습니다.

2. 다른 언어에서는 잘 되었는데 파이썬에서는 안 작동해요.
  1. 파이썬은 느립니다. 이를 빠르게 하는 다른 프로젝트가 많은데 문제 풀이 사이트에서 PyPy를 지원할 경우 PyPy로 제출해 봅시다.

  2. 입력이 엄청나게 많은 문제에서 input()을 사용하셨나요? input()은 느립니다. sys.stdin.readline()을 사용해주세요.

    import sys n = int(sys.stdin.readline())
  3. 재귀를 사용하셨나요? 파이썬은 재귀 깊이가 제한되어 있습니다. 푸는 방법은 여기를 참조해 주세요.(영어 주의) 다만 파이썬 기본 재귀 깊이를 넘어갈 정도 풀이면 다른 언어에서도 왠만하면 오류가 발생했을 겁니다.

    import sys sys.setrecursionlimit(10000000000000)
  4. 혹시 연산자를 그대로 사용하셨나요? 일부 연산자의 경우 형태가 다릅니다. 예를 들어 논리 and 가 &&가 아닌 and 입니다. 또한 연산자 우선 순위가 일부 다를 수도 있습니다. 이 자료를 참조해주세요.

  5. 들여쓰기 같은 걸 잘 지켰는지 확인해 주세요.

  6. C++에서는 큐나 스택으로 푼 풀이를 list를 이용해서 풀지 않았나요? 파이썬에 해당하는 자료형을 찾아서 사용합시다. list.pop()은 O(n)이 걸려요.

3. 자주하는 실수들 & 에러들
  1. indentati expected an indented block

    들여쓰기를 안 지켜서 생긴 오류 입니다. 이런 에러를 막기 위해서는 들여쓰기를 스페이스 4번으로 통일하고 고정푹 글꼴을 사용합시다.

  2. SyntaxError: unexpected EOF while parsing

    문법이 안 맞을 때 생기는 오류입니다. 괄호가 맞는지 잘 확인해주세요. 그래도 오류가 생긴다면 아마 복사 붙여넣기 하는 과정에서 필요없는 문자나 공백이 붙여넣기 된 경우입니다. 마지막 줄을 확인해주세요.

  3. Deep copy & Swallow copy

    혹시 리스트를 복사할 때

    orgin_list = [1, 2, 3] copy_list = origin_list

    이렇게 하셨나요? 이러면 copy_list를 수정할 때 origin_list도 같이 수정됩니다. Deep copy와 Swallow copy에 대해 검색해 보신 후 상황에 따라서 list.copy()나 copy.deepcopy를 사용합시다.



짧은 지식으로 분수모르고 적는 글이라서 모자란게 많은 지적 환영. 소스코드 다 들여쓰기 깨진건 원래 CSS넣어서 HTML안에 다 넣어 놨는데 그렇게 하니 디씨에서 오류 나더라. 디씨 요즘 개편 하는 건 좋은 데 오류가 너무 심해