[프로그래밍 언어] 코딩테스트를 위한 파이썬 vs 자바스크립트 문법 비교

Woonil·2025년 5월 3일

알고리즘

목록 보기
41/42

여태까지 구현이 쉽다는 이유로 파이썬으로 코딩테스트 연습을 진행해왔다. 하지만 프론트엔드 개발을 하며 자바스크립트 배열 및 문자열 메서드들의 특징을 잘 알고 있어야 함을 느꼈다. 아무래도 파이썬 문법에 익숙해서 서로의 문법을 헷갈리는 일이 많았다. 이에 각 상황에서 각 언어가 어떤 메서드나 방식을 사용하는지 정리하려고 한다.

📑분류

보기 쉽게 분류를 나누어 작성했으며, 편의상 자바스크립트는 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]

🔗 동일 요소 N을 가지는 M 크기 배열/리스트 생성

JS

new Array(M).fill(N)

PY

[N] * M

🔗 동일 요소 n을 가지는 M(행) X N(열) 크기 배열/리스트 생성

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()
profile
프론트 개발과 클라우드 환경에 관심이 많습니다:)

0개의 댓글