Skip to content

skyepodium/python-java-js-for-algorithm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

알고리즘을 위한 파이썬, 자바, 자바스크립트 😃

cover

요즘은 코딩테스트를 보면, 언어에 제한을 두는 경우가 있습니다.

  • Front - JavaScript
  • Machine Learning - python
  • Server - Python, Java

python, Java, JS 로 문제 풀면서 정리해봅시다.

🧩 문제 풀이

파이썬, 자바, 자바스크립트 3개의 언어로 풀었습니다.

리트코드의 경우 파이썬 알고리즘 인터뷰에 소개된 문제 위주로 진행했습니다.

리트코드

프로그래머스

🧬 알고리즘

1. 그래프

1) 최단경로

2) 완전탐색

3) 최소 스패닝 트리

4) 위상정렬

2. 링크드 리스트

1) 러너

2) 링크드 리스트 뒤집기

3. 이진탐색

1) 바이너리 서치

2) lowerbound, upperbound

4. 수학

1) GCD, LCM

2) 에라토스테네스의 체 - 소수판별

5. 기하

1) CCW

6. 정렬

알고리즘 최선 평균 최악 공간 복잡도 안정 비고
버블소트 O(n) O(n^2) O(n^2) O(1) O iteration 마다 가장 큰 원소가 제일 뒤로 이동
삽입정렬 O(n) O(n^2) O(n^2) O(1) O 참조 지역성 높음
선택정렬 O(n) O(n^2) O(n^2) O(1) X
퀵소트 O(nlogn)) O(nlogn) O(n^2) O(1) X 추가 메모리 사용 없음
병합정렬 O(nlogn) O(nlogn) O(n^2) O(n) O 추가 메모리 필요
팀소트 O(n) O(nlogn) O(nlogn) O(n) O insertion + quick
계수정렬 O(n+k) O(n+k) O(n+k) O(k) X

7. 순열

1) 순열

8. 인코딩

1) Base64

2) url 인코딩/decoding

🎃 자료구조

1. 해시맵

2. 트라이

3. 큐, 덱

4. 스택

5. 그래프

수행 인접 리스트 인접 행령 인접 셋
노드 존재 여부 검사 O(m) O(1) O(1)
순회 O(n) O(m) O(v)
간선 추가 O(1) O(1) O(1)
간선 제거 O(m) O(1) O(1)

인접셋 문제(https://atcoder.jp/contests/abc278/tasks/abc278_c)

🌏 유명한 문제

📕 팁

1. 내장함수

정렬 - 내장함수

문자열 배열 정렬

trim - 앞뒤 공백 제거

2. 문자열

특정 문자열 제거

문자열 뒤집기

문자열을 특정 단어 기준으로 분리해서 리스트로 만들기

문자열 정렬

문자열이 숫자인지 판별

대문자, 소문자로 변경

문자열 배열로 만들기

문자열 합성

정규식 - 와일드 카드

아스키 코드 값 구하기, 아스키코드에서 문자 구하기

정규표현식으로 특정 문자열 모두 검색

전체 문자열이 정규표현식과 맞는지 검사

문자열 합성

문자열에서 중첩된 부분까지 정규표현식으로 찾기 - 전방탐색

숫자, 알파벳 여부 판별

연속적인 중복 제거 - stack

3. 배열

배열 뒤집기

짧은 배열 반환

다차원 배열 생성

배열 자르기

배열 문자열로 만들기

함수형 프로그래밍은 도중에 중단할 수 없습니다.

배열 0 ~ n-1 까지 초기화하기

배열에서 최소값, 최대값 찾기

배열의 합 구하기

forEach 인덱스 함께 사용하기

4. 수학

3개의 숫자중에서 최대값 구하기

진법 변환

5. 인접리스트

인접 리스트 만들기

6. 힙 - 우선순위 큐

우선순위 큐

7. 파이썬

파이썬 리스트 출력

defaultdict

Counter

split - maxsplit

max, sort key len

8. 자바

배열 boxing, unboxing

배열 -> 리스트, 리스트 -> 배열 변환

9. 자바스크립트

자바스크립트 zip - 제너레이터

정수형 범위 - 예시) 1) shift 연산 vs Math.pow, 2) not not vs Math.trunc

10. 컬렉션

컬렉션 초기화

11. 함수형 프로그래밍

flatmap

12. 연산자

정수 나눗셈, 몫 구하기

13. 입출력

입출력

About

알고리즘을 위한 파이썬, 자바, 자바스크립트 😃

Topics

Resources

Stars

Watchers

Forks