프로그래머스, 자바스크립트) 약수의 개수와 덧셈
·
개발/알고리즘(코딩테스트)
문제https://school.programmers.co.kr/learn/courses/30/lessons/77884 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이약수를 구하는 함수를 만든 후 솔루션 함수 안에서 홀짝 판별해준다.function countDivisors(n) { let count = 0; for (let i = 1; i  다른 풀이제곱근이 정수면 약수가 홀수다.ex )12 => 1,2,3,4,6,12 , 루트12는 3.4xx로 정수가 아니다. 약수의 개수또한 짝수16 => 1,2,4,8,16, 루트 16은 4로 정수. 약수의 개수 홀..
프로그래머스, 자바스크립트) 내적
·
개발/알고리즘(코딩테스트)
문제https://school.programmers.co.kr/learn/courses/30/lessons/70128 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이배열을 순회하면서 더해준다.function solution(a, b) { //내적 구하기 let answer = 0; for (let i = 0; i
프로그래머스, 자바스크립트) 수박수박수박수박수박수?
·
개발/알고리즘(코딩테스트)
문제https://school.programmers.co.kr/learn/courses/30/lessons/12922 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이수, 수박, 수박수, 수박수박, 이런식으로 수박을 n에 따라 표현한다.짝수일때는 수박을 n/2번 반복해주면 되지만 n이 홀수일때는 뒤에 "수"를 덧붙여줘야 하므로 조건문으로 처리해 준다.function solution(n) { let result = "수박".repeat(Math.floor(n / 2)); if (n % 2) { result += "수"; } return result;}
프로그래머스, 자바스크립트) 정수를 나선형으로 배치하기
·
개발/알고리즘(코딩테스트)
문제https://school.programmers.co.kr/learn/courses/30/lessons/181832 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이우선, 0으로 채운 n x n 크기의 배열을 만들어 준다. // 결과를 저장할 이차원 배열을 n x n 크기로 만들기 const result = Array.from({ length: n }, () => Array(n).fill(0)); 나선형으로 변수를 채우기 위해 필요한 방향 변수를 정의 해놓는다. let num = 1; let row = 0, col = 0; let dr = 0, ..
프로그래머스, 자바스크립트) 안전지대
·
개발/알고리즘(코딩테스트)
문제https://school.programmers.co.kr/learn/courses/30/lessons/120866 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이배열을 돌면서, 1이 나오면 그 주변을 x로 변경한다. 단 1이 적혀있는 경우에는 1을 유지한다.배열을 다 순환한 다음에 0의 갯수를 세어 반환한다.function solution(board) { board.forEach((line, i) => { line.forEach((cell, j) => { if (cell === 1) { // 왼쪽 if (j ..
프로그래머스, 자바스크립트) 주사위 게임 3
·
개발/알고리즘(코딩테스트)
문제https://school.programmers.co.kr/learn/courses/30/lessons/181916?language=javascript 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이주사위값을 key, 해당 주사위 값의 갯수를 value로 객체를 만든다. function solution(a, b, c, d) { //{주사위값 : 갯수}로 정리 const diceValue = [a, b, c, d].reduce((acc, cur) => { acc[cur] = acc[cur] ? acc[cur] + 1 : 1; return ..
프로그래머스, 자바스크립트) 분수의 덧셈
·
개발/알고리즘(코딩테스트)
문제https://school.programmers.co.kr/learn/courses/30/lessons/120808 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이공통 분모를 맞춰준 후 최대공약수로 나누어준다.function solution(numer1, denom1, numer2, denom2) { //분자와 분모를 공통 분모로 만들어주기 const denom = denom1 * denom2; const numer = numer1 * denom2 + numer2 * denom1 //분자와 분모를 최대공약수로 나눠주기 const gcd = (a..
프로그래머스, 자바스크립트) 연속된 수의 합
·
개발/알고리즘(코딩테스트)
문제https://school.programmers.co.kr/learn/courses/30/lessons/120923 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이알고리즘을 빠르게 풀려면.....수학적 사고가 필요하다. 연속된 수의 총합을 알기때매 첫째항을 구하기 위해 등차수열의 합 공식을 이용한다.공차는 연속된 숫자이므로  => +1 총합은 total , n은 몇번째 항 => num 이 된다. 위의 공식에 맞게 식을 정리해보면 total = {2a + (num-1) }* num/2 가 된다. 여기서 a만 남기고 식을 정리하면 다음과 같다. 첫째항을 구..
프로그래머스, 자바스크립트) 다음에 올 숫자
·
개발/알고리즘(코딩테스트)
문제https://school.programmers.co.kr/learn/courses/30/lessons/120924 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이연속되는 숫자의 차이가 일정하면 등차, 비율이 일정하면 등비이다. 구조분해 할당으로 3개를 꺼내 차이가 일정한지 비교한다. => 일정하면 등차, 아니라면 등비function solution(common) { //등차 또는 등비 수열 const [a, b, c] = common; if (b - a === c - b) { //등차 수열 return common[common.len..
프로그래머스, 자바스크립트) 최빈값 구하기
·
개발/알고리즘(코딩테스트)
문제https://school.programmers.co.kr/learn/courses/30/lessons/120812 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이key는 해당 숫자, value는 갯수 를 가지는 객체를 만든다. 그리고 객체를 갯수 순서대로 정렬해서 조건에 맞게 비교한다.function solution(array) { const obj = {}; array.forEach((element) => { obj[element] = obj[element] ? obj[element] + 1 : 1; }); //value가 큰 순서대로..