순환 구조로 알파벳 간의 순서 차 구하기

function circularDifference(a, b) {
    const diff = Math.abs(a.charCodeAt(0) - b.charCodeAt(0));
    return Math.min(diff, 26 - diff);
}

순환 구조로 배열에서 index 차 구하기

function circularDifferenceIndex(length, i, j) {
    const diff = Math.abs(i - j);
    return Math.min(diff, length - diff);
}

사각형의 겹침 확인

[x1, y1, x2, y2] 형태의 사각형들이 배열로 주어졌을 때 각 사각형 사이의 겹침이 있는지 확인하는 로직

const isCrossedRect = currentRect && prevRect 
	? !(currentRect[0] > prevRect[2] 
		|| currentRect[2] < prevRect[0] 
		|| currentRect[1] > prevRect[3]
		|| currentRect[3] < prevRect[1]) 
	: true;

최대공약수 (유클리드 호제법)

function gcd(m, n) {
	let [a, b] = m > n ? [m, n] : [n : m];

	while(a % b !== 0) {
		const temp = a;
		a = b;
		b = temp % b;
	}

	return b;
}

최소공배수

function lcm(m, n) {
	return m * n / gcd(m, n);
}