반응형
snowman95
코딩수련장
snowman95
전체 방문자
오늘
어제
  • 분류 전체보기 (229)
    • 앱테크 (3)
    • 옵시디언 (5)
    • 드라마, 영화 (1)
    • 개발자 이야기 (23)
    • 프로젝트 (10)
      • 프로젝트 방법론 (7)
      • 프로젝트 기록 (2)
      • Github (1)
    • 개발 지식 (0)
      • 디자인 패턴 (0)
    • 프론트엔드 개발 (5)
      • 테크트리 (2)
      • React.js (19)
      • ReactNative (2)
      • Next.js (6)
      • GraphQL (6)
      • 패키지 매니저 (2)
      • 라이브러리 (3)
      • 상태관리 라이브러리 (4)
      • Web 지식 (3)
      • HTML CSS (26)
      • Javascript (16)
      • 도구 (Tool) (3)
      • 성능 최적화 (1)
      • 디자인시스템 (0)
    • Python (53)
      • 모음집 (1)
      • 문법 (12)
      • 라이브러리 (15)
      • 알고리즘 (10)
      • 백준 문제풀이 (9)
      • 코딩테스트 (2)
      • 도구 (Tool) (3)
    • C++ (20)
      • 알고리즘 (6)
      • 삼성SW기출 (6)
      • 삼성 A형 (6)
    • 데이터사이언스 (1)
    • 인프라 (9)
      • 하드웨어 지식 (4)
      • Ansible (2)
      • Database (2)
      • 쉘스크립트 (1)
    • 주식 (0)
    • 취업 준비 (4)
      • 취업 이야기 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • 기계식키보드 #nuphy
  • 삼성SDS
  • 전공 요약 #네트워크
  • 티스토리챌린지
  • 전공요약
  • 나의 해방일지
  • Next.js #graphql #tailwind.css
  • 백준
  • 전공 요약 #데이터베이스
  • 알고리즘
  • C++
  • 삼성SW역량테스트
  • 전공 요약 #운영체제
  • 언어
  • 면접
  • nextjs
  • 공간복잡도
  • GraphQL
  • 오블완
  • A형

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
snowman95

코딩수련장

파이썬(python) 알고리즘 정복하기 (22.09.26 up)
Python/모음집

파이썬(python) 알고리즘 정복하기 (22.09.26 up)

2021. 4. 12. 12:48
728x90
반응형

 

파이썬 알고리즘 정복하기

 

1. 기본 문법 공부 (21/04/12~ 09/04: 완료)

 

2. 코드업 알고리즘 100제 기본 문제집 풀기 (21/04/15 ~ 04/16 : 완료)

 

문제집 / Python 기초 100제

 

codeup.kr

 

3. 백준 온라인 저지 단계별로 풀어보기 (21/04/17~ 05/15 부분 완료)

 

단계별로 풀어보기

단계별은 @jh05013님이 관리하고 계십니다. 단계제목설명정보총 문제내가 맞은 문제1입출력과 사칙연산입력, 출력과 사칙연산을 연습해 봅시다. Hello World!112if문if문을 사용해 봅시다.53for문for문을

www.acmicpc.net

   → 1번 과정과 병행하면서 진행

       정말 불필요한 노가다 문제 다 뛰어넘고 기본기 익히는 정도로 진행 중

       동적 계획법2, 최단 경로 트리, 유니온, 최소신장 까지는 진행하려 했으나

       진도가 급격히 느려져서 4번 부터 진행하게 되었음. (2021-05-15)

 

 

4. 그리디 알고리즘부터 그래프 탐색, 기본 DP 문제 50개씩 풀기 (21/05/16 ~ 중단)
→ 중단 후 문자열/그리디/DP/그래프탐색/구현 1문제 씩 매일 풀기 진행 중 (21/08/22 ~ 진행중)

  • 그리디
    https://www.acmicpc.net/problemset?sort=ac_desc&algo=33 
  • 그래프 탐색
    https://www.acmicpc.net/problemset?sort=ac_desc&algo=127 
    https://www.acmicpc.net/problemset?sort=ac_desc&algo=126 
  • DP
    https://www.acmicpc.net/problemset?sort=ac_desc&algo=25 

→ 웹 개발 공부와 병행 중 (2021.05.25 ~ )

거의 8월까지 회사 일이 바빠서 진행못하다가 8월 이후로 진행 중.

 

 

5. 그래프, 중급/고급 동적 프로그래밍, 문자열 심도있게 들어가기 (커밍쑨)

 

6. 프로그래머스 사이트에서 카카오 코테 기출문제 풀기 (21/09/03 ~ 진행중)

https://programmers.co.kr/learn/challenges


1. 기본 문법 부터 마스터

프로그래밍 언어는 이론/실습의 끊임없는 병행이 답이다.

 

▶ Step1. 환경 구성

 

파이썬(python) 설치, 환경 구성 (VS Code)

파이썬 설치, 환경 구성 1. Python 및 Visual Studio Code 설치 - Python 다운로드 다운로드 방법 : Download > .exe 파일 실행 > Install Now (Add Python 3.x to Path 채크) > 설치완료 - Visual Studio Code..

11001.tistory.com

 

▶ Step2. 파이썬 문법 정리

무엇을 배우든 공식 document 가 가장 정확하고 신뢰성있다.

 

 

파이썬 자습서 — Python 3.9.4 문서

파이썬 자습서 파이썬은 배우기 쉽고, 강력한 프로그래밍 언어입니다. 효율적인 자료 구조들과 객체 지향 프로그래밍에 대해 간단하고도 효과적인 접근법을 제공합니다. 우아한 문법과 동적 타

docs.python.org

 

파이썬 언어 레퍼런스 — Python 3.9.4 문서

 

docs.python.org

 

용어집 — Python 3.9.4 문서

같은 형의 두 인자를 수반하는 연산이 일어나는 동안, 한 형의 인스턴스를 다른 형으로 묵시적으로 변환하는 것. 예를 들어, int(3.15)는 실수를 정수 3으로 변환합니다. 하지만, 3+4.5 에서, 각 인자

docs.python.org

 


파이썬은 어떤 언어인가?


  • 파이썬은 인터프리터 언어로, 컴파일/링크 단계가 없어 개발 시간 단축됨
    (인터프리터 언어 : 위에서 부터 차례로 한줄씩 읽고, 해석해서 실행하는 방식)
  • 고수준의 자료형 때문에 복잡한 연산을 한 문장으로 표현할 수 있음.
  • 문장의 묶음은 괄호 대신에 들여쓰기를 통해 이루어짐.
    (Tap or Spacebar4번)
  • 동적 타이핑 언어
    (변수 초기화 시, 언어가 알아서 타입을 할당)
  • 파이썬의 모든 것은 객체로 이루어져 있다.
  • 파이썬 소스 파일들은 UTF-8으로 인코드 된 것으로 취급

 

제일 기본적으로 알아야 되는 내용들

 

파이썬(python) 과 C언어의 변수 저장 방식 차이

변수 저장 방식 차이 C언어 메모리 공간을 할당 받고 값을 집어 넣어서 사용하는 방식이다. 메모리 공간을 할당받는 방식이 정적/동적으로 나뉜다. 정적 메모리 할당 컴파일시 고정된 크기/타입

11001.tistory.com

 

파이썬(python) 값 전달, 참조 전달

Call by value (값에 의한 호출) 함수의 인자로 실제 변수를 넘기지 않고 변수의 값(객체)를 복사하여 인자로 넘김 Immutable (불변) 객체가 이에 해당된다. def func(name): name = 1 → a와 다른 메모리에 존재

11001.tistory.com


입출력


1. 콘솔로 입출력 하기

1) 내장 함수 사용

  • 입력 : input()
  • 출력 : print()

2) sys 라이브러리

   import sys

  • 입력 : sys.stdin.readline()
  • 출력 : sys.stdout.write()

2. 파일로 입출력 하기

  • 파일열기 : open(파일명, 'r')

3. 입출력 속도 차이 비교

데이터가 많을 수록 입출력 속도 차이가 심하게 난다.
sys.stdin.readline() > input()
sys.stdout.write() > print()
 

입력 속도 비교

여러가지 언어와 입력 방법을 이용해서 시간이 얼마나 걸리는지 비교해 보았습니다. 방법: 첫째 줄에 정수의 개수 N (= 10,000,000), 둘째 줄부터 N개의 줄에 한 개의 자연수(10,000 이하)가 적힌 파일

www.acmicpc.net

 

출력 속도 비교

여러가지 언어와 출력 방법을 이용해서 시간이 얼마나 걸리는지 비교해 보았습니다. 방법: 총 N개의 줄에 1부터 10,000,000까지의 자연수를 한 줄에 하나씩 출력하는 시간을 측정. 10번 측정해서 평

www.acmicpc.net

 

 

파이썬(python) - 입출력

콘솔로 입출력 하기 1. 내장 함수 사용 ○ 입력 : input() input() 동작 : 콘솔 입력 → (Enter) → str변환 → '\n'(개행)제거 → 반환 input("문구") 동작 : "문구"출력 → 콘솔 입력 → (Enter) → str변환 →..

11001.tistory.com

 


자료 형


자료형 마다 부여된 성질을 이해해야 한다.

Sequence(연속적인 값이 이어진 형태)/집합/매핑 → Iterable(for문으로 순차접근 가능)

Literal(상수) → Immutable(변경불가능)

str(문자열) → Literal(상수) 이면서 Iterable(순차접근 가능)한 특수한 형태.

자료형 Iterable Literal / Container Mutable / Immutable
int X Literal Immutable
float X Literal Immutable
list O Container (Sequence) Mutable
tuple  O Container (Sequence) Immutable
range  O Container (Sequence) Immutable
str O Literal (Sequence) Immutable
bytes O Literal (Sequence) Immutable
byte array O Container (Sequence) Mutable
set  O Container (Set) Mutable
frozenset O Container (Set) Immutable
dict O Container (Mapping) Mutable

 

데이터 저장 방식에 따른 분류

Literal 형 : 변경불가한 단일 데이터

Container 형 : 여러가지 객체를 내부에 저장

  • Sequence 형 : 순서있는 복수 데이터모음
  • Set 형 : 순서, 중복없는 복수 데이터모음
  • Mapping 형 : key:value를 1대1 매핑한 복수 데이터모음 (key는 중복x)

변경 가능성에 따른 분류

  • 변경 가능(Mutable)    : 데이터 변경이 가능한 성질 (데이터 추가/삭제 등의 메소드 존재)
  • 변경 불가(Immutable) : 데이터 변경 불가능한 성질. 변경되는 것 처럼 보이지만, 실제로는 새 객체 만들어짐.

이터러블(Iterable)

다음 요소에 순차적으로 접근하여 조회 가능한 형태 (반복문 사용가능)

Iterable은 for문에서 iterator object로 변환되어 순차 접근 가능한 객체로 이용됨

 

파이썬(python) - 이터레이션 형 (Iteration)

이터레이션 형 (Iteration) 이터레이션(Iteration) : 어떤 객체의 원소에 하나씩 차례로 접근하는 것  - 이터러블(Iterable) : 이터레이션 가능하며 Iterator 객체로 변환가능한 객체  - 이터레이터(Iterato

11001.tistory.com

자료형의 더 자세한 내용은 아래 게시물 참고

 

파이썬 (python) 자료형

자료 형 자료형 마다 부여된 성질을 이해해야 한다. Sequence(연속적인 값이 이어진 형태)/집합/매핑 → Iterable(for문으로 순차접근 가능) Literal(상수) → Immutable(변경불가능) str(문자열) → Literal.

11001.tistory.com


자료 형 잡기술


각 자료 형의 활용도를 극대화 시켜주는 잡기술을 배워보자.

리스트 잡기술

 

파이썬(python) 리스트 잡기술

zip 함수 여러 개의 iterable 객체들을 지퍼를 닫아주듯 번갈아가며 짝지어서 튜플 형태의 iterator로 반환 길이 다르면 나머지 버려진다. zip(iterable_1, iterable_2) - output : zip 객체(iterable=반복가능)..

11001.tistory.com

 

파이썬(python) 정렬 (sort)

이터러블 정렬 (반환됨) sorted(iterable, key, reverse=False) ○ 오름차순 / 내림차순 a = sorted(iterable) : 오름차순 정렬 b = sorted(iterable, reverse=True) : 내림차순 정렬 ○ 특정 값을 기준으로 정렬..

11001.tistory.com

문자열 잡기술

 

파이썬 (python) 문자열 뒤집기 (reverse)

문자열 뒤집기 1. list 로 변환하고 list.reverse() 사용 a = 'abcde' list(a).reverse() : 반환값 없이 자기자신을 변경 c = ''.join(b) c = 'edcba' 2. reversed() 함수 사용 reversed(str) : reversed object..

11001.tistory.com

 

파이썬 (python) 문자열 중복제거 (unique)

문자열 중복제거 1. set로 변환 후 join 함수 사용 : 순서보장 X s = 'aaabbbccc' b = ''.join(set(s)) print(b) # cba 2. dict.fromkeys(word) 파이썬 3.6부터 dict가 순서보장하기 때문에 사용가능 s = 'aaabbb..

11001.tistory.com

 

iterable객체가 비어 있는지 확인 (empty check)

Null Check / Null 확인 / NULL확인 / Null 값 확인

Null 아니면 TRUE
Null 이면 FALSE

if var :

if var != None :

if var is not None :

 

all 함수 / any 함수

1. all(iterable)
 - iterable(반복 가능한 자료형)의 모든 요소가 True면 True, 아니면 False
 - 아예 비어있으면 True

 

2. any(iterable)
 - iterable(반복 가능한 자료형) 중 하나라도 True면 True, 아니면 False
 - 아예 비어있으면 False

all 함수
all([1,1,1,1,2]) = True
all([0,1,1,1,2]) = False
all([]) = True

all('asdfasdf') = True
all('') = True

all('a','b',1,0) = False
all('a','',1,2) = False
all() = True


any 함수
any([1,1,1,1,2]) = True
any([0,1,1,1,2]) = True
any([]) = False

any('asdfasdf') = True
any('') = False

any('a','b',1,0) = True
any('a','',1,2) = True
any() = False

 

함수 (기본 문법 카테고리에 편입 예정)

함수 가변인자

함수에 입력을 원하는 만큼(가변적으로) 받을 수 있음

def profile(name, age, *language):
    for lang in language:
        print(lange, end=" ")

글로벌 함수 사용

age = 10         : global 변수
def profile(name):
    age = 1      : local  변수
    
    global age   : global 변수 사용 → 함수 밖의 age가 수정됨
    age = 1 

 


유용한 표준 라이브러리


덱, 힙 등의 자료구조, 수학적 계산

순열,조합,누적합,카운터(등장횟수) 등 특수한 기능을 제공하는 유용한 라이브러리들을 알아보자

 

 

파이썬(python) 유용한 표준 라이브러리

표준 라이브러리 내장 함수 : sum(), min(), max(), sorted() 참고로 pow(a,b,n) 함수는 아래와 같이 작동하지만 저렇게 작성한 것 보다 훨씬 효율적으로 작동하여 시간차이 많이남. x = a**d % n 아래 참고 20 se

11001.tistory.com

 


알고리즘


알고리즘 이론 자체는 언어 별로 공통적입니다. (한 번만 공부해두면 됨)

그러나, 언어 별로 문법이 다르기 때문에 코드로 어떻게 표현하는 지 익혀야 합니다. (핵심)

 

 

파이썬(python) 알고리즘 - 팩토리얼

백준 10872 : 팩토리얼 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net 속도 : math.factorial > for > 재귀 1. math 라이브러리 사용 imp..

11001.tistory.com

 

파이썬(python) 알고리즘 - 소수 찾기

소수 판별, 소수 찾기, 소수 검사, 소수 판단 특정 숫자의 약수들을 나열했을때의 중앙값 <= 루트(n) 이라는 아이디어 사용 1부터 루트(n) 까지의 값으로 나눠서 0이면 소수로 판별. 4 : 1 2 4 루트(4) =

11001.tistory.com

 

파이썬 (python) 알고리즘 - 그리디 알고리즘

그리디 알고리즘 현재 상황에서 최적의 값을 탐욕적으로 취하는 알고리즘 그리디 알고리즘으로 얻은 해가 최적의 해를 보장할 수 없는 때가 많지만, 코딩 테스트에서는 최적의 해를 보장하도록

11001.tistory.com

 

파이썬(python) 알고리즘 - 백트래킹, DFS, BFS

DFS (깊이 우선 탐색) 깊이를 우선으로 탐색하는 알고리즘 스택 or 재귀함수 사용 (재귀도 사실은 스택구조임) 시작 노드에서 방문하지 않은 인접 노드를 방문. (방문 했음을 표시) 더 이상 인접 노

11001.tistory.com

 

파이썬(python) 알고리즘 - 동적 계획법 푸는 방법

DP문제를 풀어나가는 순서 1. 문제의 조건대로 손으로 그려보며 반복되는 부분을 찾습니다. 2. dp테이블 dp[i]는 무엇을 의미하는지 정의해봅니다. dp[i] = ??? 3. 디테일한 점화식을 세웁니다. dp[i] = dp

11001.tistory.com

 

파이썬(python) 알고리즘 - 최단 경로 찾기 (다익스트라)

최단 경로 찾기 (다익스트라) 양의 가중치가 있는 방향 그래프에서 최단경로 찾는 알고리즘이다. 특정 노드에서 출발하여 다른 모든 노드로 가는 최소/최대 비용 계산 가능하다. 매 순간 최저 비

11001.tistory.com

 

파이썬(python) 투 포인터

투 포인터 리스트에 순차적으로 접근해야할 때 두개의 포인터를 이용하여 합을 구하는 기법 O(N)으로 해결가능 1) a+b = k 시작점은 첫번째, 끝점은 마지막 원소를 가리킨 상태에서 시작. 이 경우

11001.tistory.com


심화 자료구조 / 알고리즘


심화 자료구조라고해도 코테 수준에서까지만 할 것임.

 

카카오 코테 광탈 기억을 되살리며

문자열 관련된 심화 자료구조를 깊이 다뤄볼 생각. (kmp, 트라이 등)

 


코테 알고리즘


최소 2021년 10월 전에는 이 수준에 도달하는 것을 목표

 

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

 

 

문제집: ★직접 코테 광탈하면서 모은 문제들☆ (danimartinwife)

 

www.acmicpc.net

 

 

근황 업데이트

22.09.26

- 취업 이후로 한동안 알고리즘과 이별하였다가 사내 스터디로 다시 시작하게 되었습니다 !

- 제가 포스팅 한거 제가 다시 읽으면서 감 되찾는 중 입니다.

- 일단 계속 꾸준히 할 예정..!

 

반응형
저작자표시 동일조건 (새창열림)
    snowman95
    snowman95
    (17~19) Unity/Unreal Engine 게임 프로그래머 (20~21) System Administrator ___________ (22~) React 웹 프론트앤드 개발자 __________ 깃헙 : https://github.com/snowman95

    티스토리툴바