프로그래머스 35

[JavaScript] 같은 숫자는 싫어 - 프로그래머스

문제 :   내 풀이 : function solution(arr){ let resultArr = []; for(let i = 0; i  1. resultArr은 중복되지 않은 요소들이 들어간다. 2. arr을 반복시키면서 현재 요소 arr[ i ]와 다음 요소 arr[ i + 1 ]가 같지 않으면, 중복되지 않은 것이고  resultArr에 추가한다. 3. 마지막 요소에서는 비교 대상인 arr[i + 1]가 undefined가 되기 때문에 자동으로 마지막 요소는 resultArr에 추가된다.

프로그래머스 2024.09.27

[JavaScript] 명예의 전당 - 프로그래머스

문제 : 내 풀이 :function solution(k, scores) { let answer = []; let hallOfFame = []; for (let i = 0; i b - a); if (hallOfFame.length > k) { hallOfFame.pop(); } answer.push(hallOfFame[hallOfFame.length - 1]); } return answer;}  1. answer는 최종적으로 반환할 배열이다. 이 배열에는 각 회차에서 상위 k명 중 가장 낮은 점수가 들어간다. 2. hallOfFame은 현재까지 누적된 점수 중 상위 k개를 저장할 배열이다. 3. 각 회차에서..

프로그래머스 2024.09.25

[JavaScript] 푸드 파이트 대회 - 프로그래머스

문제 : 내 풀이 : function solution(food) { let result = ''; for(let i = 1; i   1.  먼저 result라는 빈 문자열을 선언한다. 이 변수는 최종적으로 반환할 문자열을 만들기 위해 선언하였다. 2. 여기서 반복문이 시작된다.for (let i = 1; i  i = 1부터 food.length까지 반복한다. 각 반복에서 food[i] 값의 절반(소수점 이하 버림)을 계산한 후, 그 값만큼 i를 문자열로 변환하여 result에 추가한다. 예를 들어, food[i] = 5라면 Math.trunc(food[i] / 2)는 2가 되고, String(i).repeat(2)는 '2'가 두 번 반복된 '22'가 된다. 즉, 각 food[i] 값의 ..

프로그래머스 2024.09.19

[JavaScript] 가장 가까운 같은 글자 - 프로그래머스

문제 : 내 풀이 : function solution(s) { const lastIndex = {}; const answer = []; for (let i = 0; i   lastIndex 객체:각 문자의 마지막 등장 위치를 저장. lastIndex[s[i]]를 통해 해당 문자가 이전에 어디에서 등장했는지 빠르게 접근할 수 있다.for 루프:문자열을 순회하면서 문자가 이전에 등장한 적이 있는지 확인한다. lastIndex[s[i]] !== undefined를 통해 그 문자가 처음 등장한 것인지 아닌지 확인할 수 있다.이전에 등장했다면 현재 인덱스와 마지막 등장 위치의 차이를 계산하여 answer에 저장한다. 처음 등장한 문자라면 -1을 추가한다.마지막 등장 위치 갱신:각 문자가 처리된 후..

프로그래머스 2024.09.12

[JavaScript] 두 개 뽑아서 더하기 - 프로그래머스

문제 :  내 풀이 :function solution(numbers) { let resultSet = new Set(); for(let i = 0; i a - b )} 1. resultSet 선언 - Set은 중복된 값을 허용하지 않는 자료구조로 두 숫자의 합이 중복되더라도 Set에 저장해서 중복값을 제거한다. 2. 이중 반복문을 사용하여 숫자의 쌍을 찾기- 첫 번째 for문은 배열 numbers의 각 요소를 차례대로 선택한다. 인덱스 i가 첫 번째 숫자를 가리킨다.- 두 번째 for문은 선택된 첫 번째 숫자 이후의 숫자들을 선택한다. 즉, 인덱스 j가 i + 1부터 배열 끝까지 탐색한다. 이렇게 함으로써 중복된 쌍이 나오지 않게 보장된다. 3. 두 숫자의 합을 resultSet에 추..

프로그래머스 2024.09.10

[JavaScript] 크기가 작은 부분 문자열 - 프로그래머스

문제 : 내 풀이 :function solution(t, p) { let cnt = 0; for(let i = 0; i   주어진 함수 solution은 문자열 t에서 문자열 p와 같은 길이의 부분 문자열을 찾아, 해당 부분 문자열이 p보다 작거나 같은 경우의 수를 계산합니다. 이 코드의 동작 방식은 다음과 같다.  cnt 변수는 조건을 만족하는 부분 문자열의 개수를 세기 위한 변수로 초기값은 0입니다.for 루프는 t 문자열에서 p 문자열의 길이만큼의 부분 문자열을 추출하기 위해 사용됩니다. 루프는 t의 처음부터 t.length - p.length 인덱스까지 반복합니다.slice 메서드를 사용하여 t에서 현재 인덱스 i부터 i + p.length까지의 부분 문자열을 추출합니다.이 부분 문자열..

프로그래머스 2024.08.28

[JavaScript] 최소직사각형 - 프로그래머스

문제 :  내 풀이 :function solution(sizes) { let maxW = 0; let maxH = 0; for (let i = 0; i sizes[i][1]) { if (maxW  1.  반복문을 통해 모든 명함 크기를 하나씩 검사한다. 2.  각 명함에 대해, 가로(sizes[i][0])와 세로(sizes[i][1]) 중 더 큰 값을 가로(maxW에 대응)로 설정하고, 더 작은 값을 세로(maxH에 대응)로 설정한다. 3. 반복문이 끝난 후 maxW에는 지갑의 가로 길이로 필요한 최댓값이, maxH에는 지갑의 세로 길이로 필요한 최댓값이 들어 있다. 4. 최종적으로 maxW와 maxH를 곱하여 지갑의 최소 면적을 계산하여 반환한다. 예시예를 들어, sizes = [[60..

프로그래머스 2024.08.27

[JavaScript] 삼총사 - 프로그래머스

문제 :  내 풀이 : function solution(number) { let cnt = 0; for(let i = 0; i  첫 번째 반복문 (i): 배열 number의 첫 번째 요소부터 시작한다.두 번째 반복문 (j): i보다 뒤에 있는 요소들 중 하나를 선택한다.세 번째 반복문 (k): j보다 뒤에 있는 요소들 중 하나를 선택한다.이 세 개의 반복문은 배열 내에서 서로 다른 세 개의 인덱스 i, j, k를 선택해 조합을 만든다. 선택된 세 숫자 number[ i ], number[ j ], number[ k ]의 합이 0인지 확인하고, 합이 0인 경우 cnt를 1 증가시킨다.   📌 하지만 이 풀이는 배열의 길이가 커질수록 실행 시간이 급격히 증가할 수 있을 거라고 생각했다.   다른..

프로그래머스 2024.08.20

[JavaScript] 3진법 뒤집기 - 프로그래머스

문제 :  내 풀이 :function solution(n) { const ternaryN = n.toString(3); const ternaryNReverse = ternaryN.split('').reverse().join(''); return parseInt(ternaryNReverse, 3);}  n.toString(3)는 정수 n을 3진수로 변환한 문자열을 생성한다. 예를 들어, n이 45라면 ternaryN은 "1200"이 된다.toString 메서드는 숫자를 다양한 진수로 변환할 때 사용된다. 3은 변환할 진수를 의미한다.ternaryN.split('')는 3진수 문자열을 각 자릿수마다 배열로 나눈다. 예를 들어, "1200"이 "1", "2", "0", "0"로 나누어진..

프로그래머스 2024.08.16