전체 글 167

[Programmers] 120876번 - 겹치는 선분의 길이

Problem 문제 보기 선분 3개가 평행하게 놓여 있습니다. 세 선분의 시작과 끝 좌표가 [[start, end], [start, end], [start, end]] 형태로 들어있는 2차원 배열 lines가 매개변수로 주어질 때, 두 개 이상의 선분이 겹치는 부분의 길이를 return 하도록 solution 함수를 완성해보세요. lines가 [[0, 2], [-3, -1], [-2, 1]]일 때 그림으로 나타내면 다음과 같습니다. 선분이 두 개 이상 겹친 곳은 [-2, -1], [0, 1]로 길이 2만큼 겹쳐있습니다. Solution function solution(lines) { let answer = 0; let map = new Array(200).fill(0); for(let i = 0; i <..

[Programmers] 120866번 - 다항식 더하기

Problem 문제 보기 다음 그림과 같이 지뢰가 있는 지역과 지뢰에 인접한 위, 아래, 좌, 우 대각선 칸을 모두 위험지역으로 분류합니다. 지뢰는 2차원 배열 board에 1로 표시되어 있고 board에는 지뢰가 매설 된 지역 1과, 지뢰가 없는 지역 0만 존재합니다. 지뢰가 매설된 지역의 지도 board가 매개변수로 주어질 때, 안전한 지역의 칸 수를 return하도록 solution 함수를 완성해주세요. Solution function solution(board) { const dx = [0, 0, 1, -1, -1, -1, 1, 1]; const dy = [1, -1, 0, 0, -1, 1, -1, 1]; let count = 0; for (let i = 0; i < board.length; i+..

[Programmers] 120923번 - 연속된 수의 합

Problem 문제 보기 연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 num과 total이 주어집니다. 연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요. Solution function solution(num, total) { let result = []; let answer = Math.ceil(total / num - Math.floor(num / 2)); for(let i = 0; i < num; i++){ result.push(answer+i); } return result; } 연속된 수의 첫번째 값을 구하기 위해서는 1. total / num : 수열의 평균값 2. num ..

[Programmers] 120924번 - 다음에 올 숫자

Problem 문제 보기 등차수열 혹은 등비수열 common이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성해보세요. Solution function solution(common) { if ((common[1] / common[0]) === (common[2] / common[1])) return common[common.length-1] * (common[1] / common[0]); else return common[common.length-1] + (common[1] - common[0]); } 등차수열 : 2번째 요소 - 1번째 요소 등비수열 : 2번째 요소 / 1번째 요소 최소 3개의 원소가 들어간다고 되어있어서 3개를 비교하여 등차수열인..

[Programmers] 120907번 - OX퀴즈

Problem 문제 보기 덧셈, 뺄셈 수식들이 'X [연산자] Y = Z' 형태로 들어있는 문자열 배열 quiz가 매개변수로 주어집니다. 수식이 옳다면 "O"를 틀리다면 "X"를 순서대로 담은 배열을 return하도록 solution 함수를 완성해주세요. Solution function solution(quiz) { let answer = []; let q = []; let result = 0; for(let i = 0; i < quiz.length; i++){ q = quiz[i].split(' '); if(q[1] === '-'){ result = Number(q[0]) - Number(q[2]); } else result = Number(q[0]) + Number(q[2]); if(result ==..

[Programmers] 120863번 - 다항식 더하기

Problem 문제 보기 한 개 이상의 항의 합으로 이루어진 식을 다항식이라고 합니다. 다항식을 계산할 때는 동류항끼리 계산해 정리합니다. 덧셈으로 이루어진 다항식 polynomial이 매개변수로 주어질 때, 동류항끼리 더한 결괏값을 문자열로 return 하도록 solution 함수를 완성해보세요. 같은 식이라면 가장 짧은 수식을 return 합니다. Solution function solution(polynomial) { let xcount = []; let num = 0; let x = 0; let p = polynomial.split(' + '); for(let i = 0; i < p.length; i++){ if(p[i].includes("x")) xcount.push(p[i].slice(0, -..

[Programmers] 120871번 - 저주의 숫자 3

Problem 문제 보기 3x 마을 사람들은 3을 저주의 숫자라고 생각하기 때문에 3의 배수와 숫자 3을 사용하지 않습니다. 3x 마을 사람들의 숫자는 다음과 같습니다. 정수 n이 매개변수로 주어질 때, n을 3x 마을에서 사용하는 숫자로 바꿔 return하도록 solution 함수를 완성해주세요. Solution function solution(n) { const m = []; for(let i = 1; i

[Programmers] 120921번 - 문자열 밀기

Problem 문제 보기 문자열 "hello"에서 각 문자를 오른쪽으로 한 칸씩 밀고 마지막 문자는 맨 앞으로 이동시키면 "ohell"이 됩니다. 이것을 문자열을 민다고 정의한다면 문자열 A와 B가 매개변수로 주어질 때, A를 밀어서 B가 될 수 있다면 밀어야 하는 최소 횟수를 return하고 밀어서 B가 될 수 없으면 -1을 return 하도록 solution 함수를 완성해보세요. Solution function solution(A, B) { let a = A.split(''); for (let i = 0; i < A.length; i++){ if(A === B) return 0; a.unshift(a.pop()); if(a.join('') === B) return i+1; } return -1; } ..

[Programmers] 120880번 - 특이한 정렬

Problem 문제 보기 정수 n을 기준으로 n과 가까운 수부터 정렬하려고 합니다. 이때 n으로부터의 거리가 같다면 더 큰 수를 앞에 오도록 배치합니다. 정수가 담긴 배열 numlist와 정수 n이 주어질 때 numlist의 원소를 n으로부터 가까운 순서대로 정렬한 배열을 return하도록 solution 함수를 완성해주세요. Solution function solution(numlist, n) { return numlist.sort((a, b) => Math.abs(n - a) - Math.abs(n - b) || b - a); } 다중조건 sort()정렬을 이용하여 풀었다. numlist의 각각의 값과 n과의 차이를 구하고 실수가 나올 수 있으므로 Math.abs로 절대값 반환해준다. 그렇게 나온 값..