Algorithm | Data structure
-
[프로그래머스] 폰켓몬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번) 폰켓몬을 선택 첫..
-
[자료구조] 해시(hash), 해시 함수, 해시 테이블Algorithm | Data structure/Theory 2023. 1. 17. 16:53
1. 개요 해시 : Key:Value의 구조를 갖는 자료구조를 의미한다. ex) 전화번호부 / 이름=key, 전화번호=value Key : 매핑 전 원래 데이터의 값 Hash value : 매핑 후 데이터의 값(해쉬 테이블의 index) Hash table : (Index, value)의 집합 Hashing : 매핑하는 과정 2. 해시함수 해시함수는 임의의 길이를 갖는 임의의 데이터에 대해 고정된 길이의 데이터로 매핑하는 함수를 말한다. 같은 입력 값(key)에 대해서는 같은 출력 값(index)가 출력 된다. 해시함수는 입력 값의 범위보다 출력 값의 범위가 좁은 경우가 많기 때문에 입력 값이 다르더라도 동일한 값이 출력될 수도 있다. 이러한 경우를 ‘충돌(collision)’이라고 하는데, 위 사진 예..
-
[객체, 배열] 배열 내 반복 요소 개수 찾기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 =..