여태까지 구현이 쉽다는 이유로 파이썬으로 코딩테스트 연습을 진행해왔다. 하지만 프론트엔드 개발을 하며 자바스크립트 배열 및 문자열 메서드들의 특징을 잘 알고 있어야 함을 느꼈다. 아무래도 파이썬 문법에 익숙해서 서로의 문법을 헷갈리는 일이 많았다. 이에 각 상황에서 각 언어가 어떤 메서드나 방식을 사용하는지 정리하려고 한다.
보기 쉽게 분류를 나누어 작성했으며, 편의상 자바스크립트는 JS, 파이썬은 PY라고 하겠다.
JS
조건 ? 참 결과 : 거짓 결과
PY
참 결과 if 조건 else 거짓 결과
JS
numObj.toFixed(자릿수)
PY
round(숫자, 자릿수)
JS
rem = Math.floor(num / n)
PY
rem = num // n
JS
let ans = Infinity
PS
import math
ans = math.inf
# or
ans = int(1e9) # 1e9는 매우 큰 수를 나타내기 위한 예시
JS
"문자열".charCodeAt(index)
PY
ord('문자')
JS
// 1
Number('문자열')
// 2
parseInt('문자열') // 숫자로 변환할 수 있을 때까지만 변환
// 3
'문자열' 앞에 + 기호 붙임
PY
int('문자열')
JS
"문자열".includes("찾는 문자열")
PY
"찾는 문자열" in "문자열"
JS
'문자열'.toUpperCase() / '문자열'.toLowerCase()
PY
'문자열'.upper() / '문자열'.lower()
JS (메서드 없음)
const isUpperCase=(char)=>{
return char===char.toUpperCase()
}
PY
'문자열'.isupper() / '문자열'.islower()
편의상 배열/리스트를 A,B,.. 로 표현한다.
JS
// 1
JSON.stringify()
// 2
const equals = (a, b) => a.length === b.length && a.every((v, i) => v === b[i]);
// 3
a.sort().toString() === b.sort().toString()
PY
A==B
JS
A.at(-1)
PY
A[-1]
JS
// 1
A.push(ele)
// 2
[...A, ele]
PY
# 1
A.append(ele)
# 2
A + [ele]
JS
A.indexOf(ele, 탐색 시작 인덱스)
PY
A.index(ele)
JS
A.lastIndexOf(ele, 탐색 시작 인덱스)
PY
A.rindex(ele)
JS
A.findIndex(condition)
PY (메서드 없음)
# 직접 반복문 구현 :)
JS
Math.max(v1, v2, v3, ...) // 배열인 경우, ...(spread syntax)로 풀어줘야 함
arr.flat(depth) // 다차원 배열에서 최대 최소 구하는 경우 유용 (depth 기본값은 1)
Math.max(...arr.flat(arr))
PY
max(*args) # *args: 가변인자 => 이터러블 또는 여러 인수
JS
A.slice(start, end+1)
PY
A[start:end+1]
JS
new Array(M).fill(N)
PY
[N] * M
JS
let arr = Array.from(Array(M), () => Array(N).fill(n));
// 또는
let arr = Array(M).fill().map(e => Array(N).fill(n));
TS
arr = [[n] * N for _ in range(M)]
# 또는
arr = list([n] * N for _ in range(M))
JS
A.includes(ele, from)
PY
ele in arr
JS
let copied = a.slice() // sort()와 같이 새로운 배열을 반환하지 않는 메서드에서 유용하게 쓰임.
// let sorted = a.slice().sort()
let copied = [...a]
PY
let copied = a[:]
JS
// || 연산자 활용
arr.sort((a, b) => Math.abs(a - n) - Math.abs(b - n) || b - a);
PY
# 람다식 활용
arr.sort(key = lambda x:[-x[1], x[2], -x[3], x[0]])
JS
// 지원 메서드 없음 => 직접 구현
array.forEach((a) => {
dic[a] = dic[a] + 1 || 1;
});
// 내림차순 정렬
let sorted = Object.entries(dic).sort((a, b) => b[1] - a[1]);
PY
from collections import Counter
c = Counter(arr).most_common()