문제 설명 0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요. 제한 사항 1 ≤ numbers의 길이 ≤ 9 0 ≤ numbers의 모든 원소 ≤ 9 numbers의 모든 원소는 서로 다릅니다. 문제 풀이 방법 이 문제는 딱 보고 어떤 알고리즘을 이용하는지 감이 안왔다. 그냥 단순한 수학 문제인가 싶어서 풀어보았다. 주석으로 적혀있듯이 없는 수들의 합은 45 - (있는 수들의 합) 이라 생각하면 금방 이해가 간다. 내가 작성한 코드 const solution = numbers => { // numbers 배열안의 수들의 최대 합은 4..
프로그래머스
문제 설명 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. 제한 사항 1 ≤ left ≤ right ≤ 1,000 문제 풀이 방법 문제의 알고리즘을 완전탐색으로 생각하여 이중 for문을 이용해 코드를 작성했다. count라는 변수를 for문 안에서 선언하여 약수의 개수를 측정하는 데에 사용했다. 그리고 2로 나누었을 때 나머지가 0이면 약수가 짝수개, 0이 아니면 홀수개라는 로직으로계산했다. 내가 작성한 코드 function solution(left, right) { let answer = 0; for(let i=left; i
문제 설명 0과 1로 이루어진 어떤 문자열 x에 대한 이진 변환을 다음과 같이 정의합니다. x의 모든 0을 제거합니다. x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 바꿉니다. 예를 들어, x = "0111010"이라면, x에 이진 변환을 가하면 x = "0111010" -> "1111" -> "100" 이 됩니다. 0과 1로 이루어진 문자열 s가 매개변수로 주어집니다. s가 "1"이 될 때까지 계속해서 s에 이진 변환을 가했을 때, 이진 변환의 횟수와 변환 과정에서 제거된 모든 0의 개수를 각각 배열에 담아 return 하도록 solution 함수를 완성해주세요. 제한 사항 s의 길이는 1 이상 150,000 이하입니다. s에는 '1'이 최소 하나 이상 포함되어 있습니다. 문제 풀..
문제 설명 정수 n이 매개변수로 주어집니다. 다음 그림과 같이 밑변의 길이와 높이가 n인 삼각형에서 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한 후, 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 return 하도록 solution 함수를 완성해주세요. 제한 사항 n은 1 이상 1,000 이하입니다. 문제 풀이 방법 삼각형의 모습을 인지하고 다른 사람이 푼 코드를 보고 문제를 다시 풀었다. x, y 좌표를 구분하여 생각해서 가장 밖에 있는 칸부터 채웠다. 밖의 칸을 다 채웠으면 n -= 3 하여 다시 루프를 진행할 수 있게 했다. 코드 function solution(n) { const answer = new Array(n).fill().map((_, i) => new Array..
문제 설명 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한 사항 numbers의 길이는 2 이상 100 이하입니다. numbers의 모든 수는 0 이상 100 이하입니다. 문제 풀이 방법 우선 이 문제에서는 중복되는 수를 없애기 위해 Set()을 사용했다. 이중 for()문을 사용해 반복하며 numbers의 값들을 더해준다. 하지만 중복 인덱스 값은 더하지 않으므로 if문에 조건을 더해준다. 답 제출은 배열로 해야하므로 Set을 펼침 연산자로 배열에 넣어준다. 마지막으로 sort로 오름차순으로 나열해주고 답 제출을 하면 된다. 코드 ..
문제 설명 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한 사항 n은 1 이상 100,000,000 이하인 자연수입니다. 문제 풀이 방법 우선 받은 수를 n.toString(3)을 사용해 3진법으로 바꿔준다. 3진법으로 바꾼뒤 배열에 펼침연산자를 이용해 넣어주고 reverse()로 뒤집은 다음 join('')으로 합쳐준다. 이러면 3진법으로 바뀐뒤 뒤집힌 문자열이 나오는데, 이를 정수형으로 바꿔주면 된다. parseInt(바꿔줄 수, 바꿀 수의 진수형태) 코드 function solution(n) { let arr = [...n.toString(3)] const tNum = arr..