본문 바로가기

CS/알고리즘

(38)
[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 [.....
[230323] 최빈값 구하기 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 예전 풀이 function solution(array) { if(array.length === 1) return array[0]; const obj = {} for(let i = 0; i < array.length; i++){ obj[array[i]] = (obj[array[i]] || 0) + 1; } let max_num = -Infinity; let result = -1; const valuesArr = Object.values(obj); const max = Math.max(...valuesArr..
[230323] 유한소수 판별하기: toFixed 유한소수 판별하기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 🧸 1. a, b의 최대공약수 찾음(gcd) 2. b를 gcd로 나눔 = b 3. b를 2와 5로 나눌 수 있을 때까지 나눔 = b 4. b가 1이면 1, 아니면 2 function solution(a, b) { const getGCD = (x, y) => x % y === 0 ? y : getGCD(y, x % y); const gcd = getGCD(a, b); let bb = b / gcd; while(bb % 2 === 0 || bb % 5 === 0) { if(bb % 2 ..
[230322] 등수 매기기: indexOf 등수 매기기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 두 과목의 합을 구함 =sumScore 그것을 정렬함 =sortedScore 등수를 넣을 배열을 생성함 =answer. 배열에는 Null이 들어가 있다. rank = 1을 두고, sortedScore의 마지막 인덱스가 가장 높은 점수이므로 이것을 max에 저장한다. sumScore를 순회하고 그 값이 max와 동일하면, answer 의 해당 인덱스에 rank를 넣음. 그리고 sumScore의 해당 인덱스에는 -1 값을 넣어서 해당 인덱스는 등수를 매겼음을 표시하여 값을 없앤다. → 이것을..
[230321] 특이한 정렬 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🧸 sort()는 배열 주소를 참조하여 수정하므로, 원본 데이터를 수정한다는 사실을 주의하자! 내 풀이 -k 더하고 절댓값인 배열 생성 = numArray numlist의 각 숫자를 -k 더함 = x x < 0 면 numArray에 -x가 있는지 확인 있으면 +0.5 하기 (꼭 0.5가 아니어도 됨. 0.1이어도 된다. 후에 확인용으로 더하는 것임) numPointArray를 정렬함 =sortedNumArray sortedNumArray에 각 숫자를 보고 정수면 +n 정수가 아니면 -num +n+0.5 ..
[230321] 최대공약수(GCD), 최소공배수(LCM) 최대공약수(GCD) 두 수 A와 B의 공통된 약수 중 가장 큰 정수 가장 쉬운 방법: 2부터 min(A,B)까지 모든 정수로 나눴을 때 나머지 값이 0인지 보기 (A % GCD) const getGCD = (num1, num2) => { let gcd = 1; **for** (let i = 0; i { let lcm = 1; **while** (true) { if (lcm % num1 === 0 && lcm % num2 === 0) { break; } lcm++; } return lcm; } 유클리드 호제법을 이용한 구현 유클리드 호제법의 기본 원리 🧸 num1 % num 2 = r 라면, GCD(num1, num2) = GCD(num2, r) 이다. 따라서 r = 0 일 때, num2는 최대공약수이다...

반응형