Algorithm | Data structure/문제풀이
-
[프로그래머스] JavaScript 진수 변환Algorithm | Data structure/문제풀이 2023. 4. 5. 19:57
JavaScript 진수 변환 프로그래머스의 3진법 뒤집기 문제를 풀다가 진법 변환 문제가 나와 정리한다. 10진수를 n진수로 변환 const decimal = 100; const ternary = decimal.toString(3); // 3진수 변환 const binary = decimal.toString(2); // 2진수 변환 const octal = decimal.toString(8); const hex = decimal.toString(16); n진수를 10진수로 변환 let decimal; decimal = parseInt(ternary, 3); // 3진수를 10진수로 변환 decimal = parseInt(binary, 2); // 2진수를 10진수로 변환 decimal = parseIn..
-
[프로그래머스] 약수의 개수와 덧셈Algorithm | Data structure/문제풀이 2023. 3. 17. 22:40
Q. 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. ( 1 ≤ left ≤ right ≤ 1000 ) 알게 된 것 : 약수의 갯수가 홀수인 수는 제곱근이 정수인 수이다. thinking 약수의 정의 : 임의의 정수 x가 임의의 정수 y로 나누어 떨어질때, y를 x의 약수라고 부른다. 여기서 만약 약수 y가 정의가 된다면 y * 몫 = x이기 때문에, x의 약수 y가 정의 되면 사실상, x의 약수는 y와 몫 2개라는 사실을 알 수 있다. 즉, 약수 하나를 발견하면 그것은 약수를 2개씩 발견하는 것과 같다는 말이다. 따라서,..
-
[프로그래머스] 폰켓몬Algorithm | Data structure/문제풀이 2023. 1. 17. 18:26
문제 설명 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. 홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가 있습니다. 첫 번째(3번), 두 번째(1번) 폰켓몬을 선택 첫 번째(3번), 세 번째(2번) 폰켓몬을 선택 첫..
-
[객체, 배열] 배열 내 반복 요소 개수 찾기Algorithm | Data structure/문제풀이 2022. 11. 8. 18:43
Q. 숫자로 이루어진 배열인 nums를 인자로 전달합니다. 숫자중에서 과반수(majority, more than a half)가 넘은 숫자를 반환해주세요. 가정 : nums 배열의 길이는 무조건 2 이상 nums = [3,2,3] return 3 nums = [2,2,1,1,1,2,2] return 2 Answer function moreThanHalf(nums) { const numObj = nums.reduce((pre, cur) => { pre[cur] = (pre[cur] || 0) + 1 return pre },{}); let result; for (let key in numObj) { if(numObj[key] >= nums.length / 2) { result = key } } return ..
-
[객체, 배열] 로마자에서 숫자로 바꾸기(수열)Algorithm | Data structure/문제풀이 2022. 11. 8. 09:45
Q. 로마자에서 숫자로 바꾸기 1~3999 사이의 로마자 s를 인자로 주면 그에 해당하는 숫자를 반환해주세요. 로마 숫자를 숫자로 표기하면 다음과 같습니다. Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1000 로마자를 숫자로 읽는 방법은 로마자를 왼쪽부터 차례대로 더하면 됩니다. III = 3 XII = 12 XXVII = 27 입니다. 그런데 4를 표현할 때는 IIII가 아니라 IV 입니다. 뒤의 숫자에서 앞의 숫자를 빼주면 됩니다. 9는 IX입니다. I는 V와 X앞에 와서 4, 9 X는 L, C앞에 와서 40, 90 C는 D, M앞에 와서 400, 900입니다. Answer - 우선 주어진 로마자를 split 메소드를 이용해 배열로 spread 하면 되겠다고 생각..
-
숫자 뒤집기Algorithm | Data structure/문제풀이 2022. 11. 1. 19:08
reverse 함수에 정수인 숫자를 인자로 받습니다. 그 숫자를 뒤집어서 return해주세요. x: 숫자 return: 뒤집어진 숫자를 반환! 예를 들어, x: 1234 return: 4321 x: -1234 return: -4321 x: 1230 return: 321 내 답안 const reverse = x => { 여기에 코드를 작성해주세요. if (x >= 0) { return Number(String(x).split('').reverse().join('')); } else { const reverseX = String(x).split('').reverse(); reverseX.pop(); reverseX.unshift('-') return Number(reverseX.join('')) } } 동기..
-
배열 요소의 조합을 찾는 문제Algorithm | Data structure/문제풀이 2022. 10. 31. 20:30
Q. twoSum 함수에 숫자배열과 '특정 수'를 인자로 넘기면, 더해서 '특정 수'가 나오는 index를 배열에 담아 return해 주세요. nums: 숫자 배열 target: 두 수를 더해서 나올 수 있는 합계 return: 두 수의 index를 가진 숫자 배열 예를 들어, nums은 [4, 9, 11, 14] target은 13 nums[0] + nums[1] = 4 + 9 = 13 이죠? 그러면 [0, 1]이 return 되어야 합니다. # 가정 target으로 보내는 합계의 조합은 배열 전체 중에 2개 밖에 없다고 가정하겠습니다. 답안 // 내 답안 const twoSum = (nums, target) => { // 아래 코드를 작성해주세요. let result = []; for (let i =..