프론트 개발자를 위한 여정

모든 영역을 안내하는 개발자

2024/11/23 4

JS Array prototype 함수의 시간 복잡도 비교(indexOf, concat ...)

자바스크립트의 배열 메서드는 내부적으로 반복문을 사용하여 배열의 요소를 탐색하고, 이에 따라 시간 복잡도가 달라집니다. 배열 메서드의 시간 복잡도를 비교하여 가장 효율적인 함수와 비효율적인 함수를 구분하는 것이 중요합니다. 아래는 주요 배열 메서드들의 시간 복잡도와 이들의 효율성에 대한 설명입니다.1. indexOf의 시간 복잡도Array.prototype.indexOf()는 배열에서 특정 값을 찾고 그 인덱스를 반환하는 메서드입니다.시간 복잡도: O(n)indexOf는 배열의 첫 번째 요소부터 끝까지 순차적으로 탐색하여 일치하는 값의 인덱스를 찾습니다. 배열의 길이가 n이라면 최악의 경우 배열의 모든 요소를 확인해야 하므로 시간 복잡도는 **O(n)**입니다.2. 배열 함수들의 시간 복잡도다음은 배열에..

Algorithm 2024.11.23

JS 배열 구조 분해 할당(Destructuring Assignment)

구조 분해 할당 구문은 배열이나 객체의 속성을 해체하여 그 값을 개별 변수에 담을 수 있게 하는 JavaScript 표현식입니다.  1. 배열 디스트럭처링을 이용한 값 교환 방식**배열 디스트럭처링(Destructuring Assignment)**은 자바스크립트에서 배열이나 객체의 값을 손쉽게 추출하고 변수에 할당하는 문법입니다. 배열 디스트럭처링을 사용하면 두 값의 위치를 교환(swap)하는 작업을 한 줄로 간결하게 처리할 수 있습니다.배열 디스트럭처링을 이용한 값 교환배열 디스트럭처링을 사용하면 두 값의 자리를 바꾸는 스와핑 작업을 매우 간결하게 구현할 수 있습니다. 예를 들어, 두 배열 요소를 교환하려면 다음과 같은 구문을 사용할 수 있습니다:[players[index], players[index-..

Frontend/JavaScript 2024.11.23

[프로그래머스] 연습문제 / 달리기 경주 / Lv1 / JS / 접근법

문제 설명얀에서는 매년 달리기 경주가 열립니다. 해설진들은 선수들이 자기 바로 앞의 선수를 추월할 때 추월한 선수의 이름을 부릅니다. 예를 들어 1등부터 3등까지 "mumu", "soe", "poe" 선수들이 순서대로 달리고 있을 때, 해설진이 "soe"선수를 불렀다면 2등인 "soe" 선수가 1등인 "mumu" 선수를 추월했다는 것입니다. 즉 "soe" 선수가 1등, "mumu" 선수가 2등으로 바뀝니다.선수들의 이름이 1등부터 현재 등수 순서대로 담긴 문자열 배열 players와 해설진이 부른 이름을 담은 문자열 배열 callings가 매개변수로 주어질 때, 경주가 끝났을 때 선수들의 이름을 1등부터 등수 순서대로 배열에 담아 return 하는 solution 함수를 완성해주세요.제한사항5 ≤ pla..

[프로그래머스] 연습문제 / 콜라 문제 / Lv1 / JS / 탐욕알고리즘

문제 설명오래전 유행했던 콜라 문제가 있습니다. 콜라 문제의 지문은 다음과 같습니다.정답은 아무에게도 말하지 마세요.콜라 빈 병 2개를 가져다주면 콜라 1병을 주는 마트가 있다. 빈 병 20개를 가져다주면 몇 병을 받을 수 있는가?단, 보유 중인 빈 병이 2개 미만이면, 콜라를 받을 수 없다.문제를 풀던 상빈이는 콜라 문제의 완벽한 해답을 찾았습니다. 상빈이가 푼 방법은 아래 그림과 같습니다. 우선 콜라 빈 병 20병을 가져가서 10병을 받습니다. 받은 10병을 모두 마신 뒤, 가져가서 5병을 받습니다. 5병 중 4병을 모두 마신 뒤 가져가서 2병을 받고, 또 2병을 모두 마신 뒤 가져가서 1병을 받습니다. 받은 1병과 5병을 받았을 때 남은 1병을 모두 마신 뒤 가져가면 1병을 또 받을 수 있습니다. ..