728x90
반응형

프로그래머스 19

[프로그래머스] 숫자 짝꿍

문제 설명 문제 분석두 정수 X, Y가 주어집니다.X, Y에서 공통으로 나타나는 숫자를 사용하여 만들 수 있는 가장 큰 정수를 찾아야 합니다.공통된 숫자가 없다면 "-1", 공통된 숫자로 0밖에 만들 수 없다면 "0"을 반환합니다. 첫 번째 접근:  O(n * m) function solution(X, Y) { let answer = '' let [xLength, yLength] = [X.length, Y.length] new Array(10).fill(0).forEach((_, i) => { X = X.replaceAll(9 - i, '') Y = Y.replaceAll(9 - i, '') const count1 = xLengt..

[프로그래머스] 햄버거 만들기

문제 설명 문제 분석햄버거 가게에서 일하는 상수는 정해진 순서(아래서부터 빵-야채-고기-빵)로 쌓인 햄버거를 포장해야 합니다.재료가 순서대로 들어올 때마다 햄버거를 만들 수 있는지 확인하고, 만들 수 있다면 포장합니다.ingredient 배열에는 1(빵), 2(야채), 3(고기)의 값이 담겨있습니다.상수가 포장할 수 있는 햄버거의 개수를 반환해야 합니다. 첫 번째 접근:  문자열 조작(O(n²) ) (시간 초과) function solution(ingredient) { const hamburger = '1231' let answer = 0 ingredient = ingredient.join('') while(ingredient.includes(hamburger)) { ..

[프로그래머스] 해시 - 완주하지 못한 선수

24년 12월 28일해결한 문제 갯수: 4 문제 설명  문제 분석마라톤에 참여한 선수들의 명단(participant)과 완주한 선수들의 명단(completion)이 주어집니다.단 한 명의 선수를 제외하고는 모든 선수가 완주했습니다.완주하지 못한 선수의 이름을 찾아야 합니다. 첫 번째 접근:  Array.splice() 사용 (시간 초과) function solution(participant, completion) { return completion.reduce((a, c) => { const idx = participant.indexOf(c) a.splice(idx, 1) return a }, participant)[0]}indexOf()와 splice()..

[프로그래머스] 로또의 최고 순위와 최저 순위

24년 12월 27일해결한 문제 갯수: 1 문제 설명 문제 분석로또 6/45는 1부터 45까지의 숫자 중 6개를 찍어 맞히는 대표적인 복권입니다. 알아볼 수 없는 번호(0)를 포함하여 민우가 구매한 로또 번호와 당첨 번호가 주어질 때, 당첨 가능한 최고 순위와 최저 순위를 리턴하는 문제입니다.제한사항 lottos는 길이 6인 정수 배열입니다.lottos의 모든 원소는 0 이상 45 이하인 정수입니다.0은 알아볼 수 없는 숫자를 의미합니다.win_nums는 길이 6인 정수 배열입니다. 첫 번째 접근: filter, includes O(n²)function solution(lottos, win_nums) { const correct = lottos.filter(el => win_nums.includes..

[프로그래머스] [1차] 다트 게임

24년 12월 26일해결한 문제 갯수: 3 문제 설명 문제 분석다트 게임은 총 3번의 기회로 구성됩니다.각 기회마다 0-10점을 얻을 수 있습니다.S, D, T는 각각 1제곱, 2제곱, 3제곱을 의미합니다.'*'는 해당 점수와 바로 전 점수를 2배로 만듭니다.'#'은 해당 점수를 마이너스로 만듭니다. 첫 번째 접근: reduce() (O(n))function solution(dartResult) { const bonus = { S: 1, D:2, T:3 } return Array.from(dartResult).reduce((answer, c) => { // 문자열을 한글자씩 처리 if(Number.isNaN(Number(c))) { if(bonus[c]) { ..

[프로그래머스] 과일 장수

24년 12월 24일해결한 문제 갯수: 5 문제 설명 문제 분석k: 최상품의 사과 점수m: 상자에 담길 수 있는 사과의 갯수score: 각 사과의 점수가 담긴 배열m개씩 담긴 사과 상자에서, (가장 낮은 사과 점수 * m)를 반환합니다.이익이 발생하지 않는 경우, 0을 return합니다. 첫 번째 접근: while (O(n))function solution(k, m, score) { score.sort((a, b) => b - a) let answer = 0 while(score.length >= m) { answer += score.slice(0, m)[m-1] * m score.splice(0, m) } return answer}sco..

[프로그래머스] 포켓몬

24년 12월 23일해결한 문제 갯수: 1 문제 설명 문제 분석 N마리의 폰켓몬 중에서 N/2마리를 선택합니다.최대한 많은 종류의 폰켓몬을 선택하는 것이 목표입니다.같은 종류의 폰켓몬은 같은 번호를 가집니다.nums의 길이는 1 이상 10,000 이하인 자연수이며, 항상 짝수입니다.폰켓몬의 종류 번호는 1 이상 200,000 이하의 자연수입니다.  접근: Set() (O(n))function solution(nums) { const set = new Set(nums) return nums.length / 2 nums.length : 총 포켓몬 수nums.length / 2 : 선택 가능한 수set.size : 포켓몬 종류 수결론: set.size가 더 큰 경우, 선택할 수 있는 포켓몬의 수가 ..

[프로그래머스] [1차] 비밀지도

24년 12월 21일해결한 문제 갯수: 5 문제 설명문제 분석지도는 한 변의 길이가 n인 정사각형 배열입니다.각각의 지도는 이진수로 암호화되어 있습니다.암호화된 배열은 각 가로줄에서 벽 부분을 1, 공백 부분을 0으로 부호화했을 때 얻어지는 이진수에 해당하는 값의 배열입니다. 첫 번째 접근 : reduce() -   O(n²)function solution(n, arr1, arr2) { return arr1.reduce((answer, c, i) => { // 두 배열의 숫자를 이진수 문자열로 변환 let str1 = c.toString(2) let str2 = (arr2[i]).toString(2) // n자리 이진수로 맞추기 위해 ..

[프로그래머스] 숫자 문자열과 영단어

24년 12월 20일해결한 문제 갯수: 4 문제 설명문제 분석이 문제는 숫자와 영단어가 섞여있는 문자열에서 모든 영단어를 해당하는 숫자로 변환하는 것이 목표입니다."one4seveneight" → 1478"23four5six7" → 234567"2three45sixseven" → 234567 접근 : Object.entries() / reduce()function solution(s) { const nums = { zero: 0, one: 1, two: 2, three: 3, four: 4, five: 5, six: 6, seven: 7, eight: 8, nine: 9 } const answer = Object.entries(nums).reduce((a..

[프로그래머스] 외계어 사전

24년 12월 17일해결한 문제 갯수: 16 문제 설명 문제 분석- spell의 모든 문자를 정확히 한 번씩 사용해야 합니다.- dic에 조건을 만족하는 단어가 있으면 1, 없으면 2를 반환합니다.- spell과 dic의 모든 원소는 알파벳 소문자로만 구성  첫 번째 접근: Reduce 활용function solution(spell, dic) { return spell.reduce((answer, l) => { dic = dic.filter(el => el.includes(l)) answer = dic.length > 0 ? 1 : 2 return answer }, 1)}1.  reduce를 사용한 spell 배열 순회- 누적값인 answer..

728x90
반응형