728x90
반응형

전체 글 192

[프로그래머스] 시저암호

24년 12월 19일해결한 문제 갯수: 8 문제 설명  문제 분석공백은 그대로 유지알파벳만 이동 (대/소문자 구분)밀어내는 거리 n은 1 이상 25 이하문자열 길이는 8000 이하 첫 번째 접근 : 문자 코드를 이용한 방법function solution(s, n) { return s.split('').map(el => { if(el === ' ') return el else { const target = el.charCodeAt() + n const [z, Z] = ['z'.charCodeAt(), 'Z'.charCodeAt()] if((el === el.toLowerCase() ..

[프로그래머스] 부족한 금액 계산하기

24년 12월 18일해결한 문제 갯수: 30 문제 설명 문제 분석이용료 price: 1 ≤ price ≤ 2,500처음 가진 금액 money: 1 ≤ money ≤ 1,000,000,000이용 횟수 count: 1 ≤ count ≤ 2,500  첫 번째 접근 : 반복문을 이용한 해결 (O(n))function solution(price, money, count) { let i = 1 let sum = 0 while(i 0 ? 0 : sum - money} 1) while 루프를 사용해 각 회차별 금액을 계산합니다. 2) 1부터 count 까지 증가하는 배수를 누적합니다.3) 최종 금액과 보유 금액을 비교하여 부족액을 반환합니다.  두 번째 접근: 등차수열의 합 공식(O(1))fu..

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

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..

[프로그래머스] 숨어있는 숫자의 덧셈 (2)

24년 12월 16일해결한 문제 갯수: 4 문제 설명 문제 분석문자열은 영문자, 숫자로만 구성됩니다.연속된 숫자는 하나의 숫자로 취급합니다.'000123'과 같이 0이 선행하는 경우는 없습니다.숫자가 없는 경우 0을 반환합니다.  첫 번째 접근: Reduce를 이용한 처리function solution(str) { return Array.from(str).reduce((a, c, i) => { if(Number(c) || c === '0'){ a += c } else if(!Number.isNaN(Number(a.slice(-1)))) a += ' ' return a }, '').split(' ').reduce((a, c)..

[프로그래머스] 치킨쿠폰

24년 12월 15일해결한 문제 갯수: 8 문제 설명 문제 분석 치킨을 주문하면 한 마리당 쿠폰을 한 장 받습니다.쿠폰을 10장 모으면 치킨 한 마리를 서비스로 받을 수 있습니다.서비스 치킨을 받으면 쿠폰도 한 장 받습니다. 접근: 반복문을 이용한 해결function solution(chicken) { let answer = 0; let rest = chicken; while(rest / 10 >= 1) { answer += Math.floor(rest / 10); rest = Math.floor(rest / 10) + rest % 10; } return answer;}1. answer: 받을 수 있는 서비스 치킨의 총 개수2. rest : 현재..

[프로그래머스] 배열의 길이를 2의 거듭제곱으로 만들기

24년 12월 14일해결한 문제 갯수: 52 문제 설명  문제 분석- 주어진 배열 arr의 길이를 2의 거듭제곱으로 만들고, 추가된 공간을 0으로 채우는 문제입니다. 이때 최소한의 0을 추가하여 2의 거듭제곱 길이를 만들어야 합니다.- 원래 배열의 요소는 그대로 유지합니다.  첫 번째 접근: 반환되는 배열의 길이 계산function solution(arr) { const n = Math.ceil(Math.log(arr.length) / Math.log(2)) return new Array(Math.pow(2, n)).fill(0).map((el, i) => arr[i] ? arr[i] : el)}1. n : 반환되어야 하는 배열의 총 길이- '2ⁿ = arr.length'를 만족하는 n을 계산..

[프로그래머스] 정수를 나선형으로 배치하기

24년 12월 13일해결한 문제 갯수: 24 문제 설명 문제 분석- 주어진 크기 n x n의 2차원 배열에 1부터 n² 까지의 정수를 나선형으로 채우는 문제입니다. 숫자는 좌측 상단에서 시작하여 시계 방향으로 나선형을 그리며 채워집니다.  첫 번째 접근function solution(n) { let d = 'right' let [i, j, value] = [0, 0, 1] const answer = Array.from({length: n}, () => new Array(n).fill(0)) while(value = 0 && answer[i][j-1] === 0) j -= 1 else { d = 'top' ..

[프로그래머스] 전국 대회 선발 고사

24년 12월 12일해결한 문제 갯수: 10 문제 설명 문제 분석- 학생들의 순위(rank)와 참가 가능 여부(attendance)를 기반으로 특정 조건을 만족하는 학생들을 선발하고, 그 결과를 계산하는 문제입니다. - rank: 각 학생의 시험 점수 순위가 적힌 배열- attendance: 각 학생의 참가 가능 여부(true/false)가 적힌 배열- 참가 가능한 학생들 중 순위가 가장 높은 3명을 선발합니다.- 선발된 학생들의 인덱스를 사용하여 10000a + 100b + c 계산합니다.  접근: 메소드 체이닝function solution(rank, attendance) { return attendance .map((el, i) => el ? i : '') .filte..

[프로그래머스] 왼쪽 오른쪽

24년 12월 11일해결한 문제 갯수: 11 문제 설명 문제 분석- "l"이 "r"보다 먼저 나오면, "l" 이전의 모든 원소를 순서대로 담은 배열을 반환합니다. - "r"이 "l"보다 먼저 나오면, "r" 이후의 모든 원소를 순서대로 담은 배열을 반환합니다.- "l"과 "r"이 없다면 빈 배열을 반환합니다.     첫 번째 접근: indexOf를 활용한 방법 function solution(str_list) { let answer const [lIdx, rIdx] = [str_list.indexOf("l"), str_list.indexOf('r')] if([lIdx, rIdx].includes(-1)) { if(lIdx === rIdx) return [] ..

[프로그래머스] 배열 만들기 5

24년 12월 10일해결한 문제 갯수: 23 문제 설명  문제 분석- 문자열 배열 intStrs의 각 원소에서 인덱스 s부터 길이 l만큼의 부분 문자열을 추출합니다.- 추출된 문자열을 숫자로 변환합니다.- 변환된 숫자가 k보다 큰 경우만 선택하여 새 배열을 생성합니다.  첫 번째 접근: map과 filter 조합 function solution(intStrs, k, s, l) { return intStrs.map(n => { let num = Number(n.slice(s, s + l)) return num > k ? num : 0 }).filter(a => a)} map을 사용하여 각 문자열을 처리:slice(s, s + l)로 부분 문자열 추출Number()로 문자..

728x90
반응형