본문 바로가기

CS

(45)
[230326] 짝지어 제거하기: stack 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 i가 첫 번째 원소라서 stack에 원소가 하나밖에 없을 때, stack[stack.length - 2]는 undefined 다. function solution(s) { const stack = []; for(let i of s) { stack.push(i); if(stack[stack.length - 1] === stack[stack.length - 2]){ stack.pop(); stack.pop(); } } return stack.length === 0 ? 1 : 0; } (+) 효율성 ..
[230326] 영어 끝말잇기 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 i = 1 부터 시작해야 oldWord가 존재함 oldWord = 현재 보는 단어의 이전 단어 wod = 현재 단어 하나라도 조건을 만족하지 않으면 [번호, 차례]를 반환한다. 조건1: 한 글자인 경우 (word.length === 1) 조건2: 현재 단어의 첫 글자와 이전 단어의 마지막 글자와 다른 경우 (word[0] !== oldWord[oldWord.length - 1]) 조건3: 현재 말한 단어가 이전 단어에 포함된 경우 (words.slice(0, i).includes(word)) 반..
[230326] 다음 큰 숫자 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 2진수로 변환 후 1의 개수를 구하는 식이 반복되어서 함수를 생성하였다. n+1 숫자부터 보고 2진수 변환 후 1의 개수가 동일하다는 조건을 만족하는 숫자가 나오는 즉시 그 숫자를 해답으로 반환한다. function solution(n) { const binaryN = getOneNum(n); let temp = n; while(true) { const binaryTemp = getOneNum(++temp); if(binaryTemp === binaryN) return temp; } } cons..
[230326] 숫자의 표현 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 i는 끝까지(n) 가면 비효율적이므로, Math.floor(n / 2) 까지만 가도록 작성하였음 answer = 1 ⇒ n은 무조건 포함되는데, i는 n까지 가지 않으므로 처음부터 n을 포함하고 시작함 function solution(n) { let answer = 1; const endNum = Math.floor(n / 2) for(let i = 1; i 0){ i++; if(n % i === 0) answer++; n -= i; } return answer; }
[230325] 3진법 뒤집기: parseInt, toString 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 진짜 문제 그대로 풀었음. 3진수로 변환 (=toString(3)) 앞뒤로 뒤집음 (=[…1번].reverse().join(’’)) 다시 10진법으로 표현 (=parseInt(2번, 3)) function solution(n) { return parseInt([...n.toString(3)].reverse().join(''), 3) } parseInt: N진수 → 10진수 parseInt(num, N) toString: 10진수 → N진수 num.toString(N)
[230325] 이진 변환 반복하기 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 “1”이 될 때까지 반복하므로, s가 “1”이라면 answer를 반환한다. “1”이 아니라면 변환하는 횟수를 더함. 따라서 answer[0] += 1. 그리고 s에서 0의 개수만큼 answer[1]에 더할 것이다. s를 0 단위로 쪼개고 그 길이에서 -1한 값이 s에서 0의 개수이므로, s.split(’0’).length - 1을 더한다. s에서 “0”을 모두 “”로 대체하여 0을 없애고, 그 길이만큼(.length) 이진수로 변환(=toString(2))한다. solution(s)를 반환하여 ..
[230325] 최솟값 만들기 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 A를 오름차순, B를 내림차순으로 정렬 각 인덱스 값을 곱하여 총 합한다. function solution(A,B){ A.sort((a, b) => a - b); B.sort((a, b) => b - a); let answer = 0; for(let i = 0; i < A.length; i++){ answer += A[i] * B[i]; } return answer; }
[230323] 둘만의 암호 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 → 코드 실행은 모두 통과하는데(추가한 테케 포함), 제출하면 테스트 2, 9 제외하고 모두 실패로 뜬다. 왜 실패하는지 원인 분석 필요함. function solution(s, skip, index) { const alphabetList = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; return [.....

반응형