자바스크립트 26

10. 프로그래머스 - 신규 아이디 추천

1. 문제 문제 설명 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다. 다음은 카카오 아이디의 규칙입니다. 아이디의 길이는 3자 이상 15자 이하여야 합니다. 아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있습니다. 단, 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다. "네오"는 다음과 같이 7단계의 순차적인 처리 과정을 통해 신규 유저가 ..

9. 프로그래머스 - 음양더하기

1. 문제 문제 설명 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요. 제한사항 absolutes의 길이는 1 이상 1,000 이하입니다. absolutes의 모든 수는 각각 1 이상 1,000 이하입니다. signs의 길이는 absolutes의 길이와 같습니다. signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다. 입출력 예 absolutes signs result [4,7,12] [true,false,true] 9 [1,2,3] [fals..

8. 프로그래머스 - 로또의 최고 순위와 최저 순위

1. 문제 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 순위 당첨내역 1 6개 번호가 모두 일치 2 5개 번호가 일치 3 4개 번호가 일치 4 3개 번호가 일치 5 2개 번호가 일치 6(낙첨) 그 외 로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다. 당첨 번호 발표 후, 민우는 자신이 구매했던 로또로 당첨이 가능했던 최고 순위와 최저 순위를 알아보고 싶어 졌습니다. 알아볼 수 없는 번호를 0으로 표기하기로 하고, 민우가 구매한 로또 번호 6개가 44, 1, 0, 0, 31 25라고 가정해보겠습니다. ..

7. 프로그래머스 - 124나라의 숫자

1. 문제 124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다. 124 나라에는 자연수만 존재합니다. 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다. 예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다. 10진법 124 나라 10 진법 124나라 1 1 6 14 2 2 7 21 3 4 8 22 4 11 9 24 5 12 10 41 자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 solution 함수를 완성해 주세요. 입출력 예 n result 1 1 2 2 3 4 4 11 2. 나의 풀이 function solution(n) { let answer = ''; c..

6. 프로그래머스 - 나누어 떨어지는 숫자 배열

1. 문제 문제 설명 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요. 제한사항 arr은 자연수를 담은 배열입니다. 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다. divisor는 자연수입니다. array는 길이 1 이상인 배열입니다. 입출력 예 arr divisor return [5, 9, 7, 10] 5 [5, 10] [2, 36, 1, 3] 1 [1, 2, 3, 36] [3,2,6] 10 [-1] 2. 나의 풀이 function solution(arr, divisor) { let an..

5. 프로그래머스 - 3진법뒤집기

1. 문제 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요 제한사항 n은 1 이상 100,000,000 이하인 자연수입니다. 입출력 예 n result 45 7 125 229 2. 나의 풀이 function solution(n) { let answer; answer = n.toString(3).split("").reverse().join("") return parseInt(answer, 3) } 문제를 보고 이렇게 생각을 했다. - n을 받아서 3진법으로 바꾼다. - 3진법으로 바꾼 값을 앞뒤로 반전 시킨다. - 10진 법으로 다시 표현한다. 생각을 해보면 필요한 메서드들은 이미 다 구현..

4. 프로그래머스 - 실패율

1. 문제 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다. 이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구현했지만, 실패율을 구하는 부분에서 위기에 빠지고 말았다. 오렐리를 위해 실패율을 구하는 코드를 완성하라. 실패율은 다음과 같이 정의한다. 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수 전체 스테이지의 개수 N, 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages가 매개변..

3. 프로그래머스 - 기능개발

1. 문제 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한 사항 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의 자연수입니다. 작업 속도는 100 이하의 자..

자바스크립트 12. 자료구조(Data Structure) - 트리(Tree)

자료구조 기록의 마지막! 트리에 대해서 기록해보자! 📕트리(Tree) 개념 트리는 위의 바오밥 나무를 뒤집은 구조라고 생각하면 이해하기가 쉽다. 구조가 나무와 닮아 있기 때문에 Tree라고 이름을 부텼다. 하나의 뿌리에서 가지가 사방으로 나오는 모습을 하고 있다. 트리 구조는 노드(또는 Vertex라고도 한다.)가 부모 자식의 관계를 가지는 구조이다. 제일 상단에 있는 노드를 root라고 하고, 더이상 자식의 노드가 없는 노드는 나뭇잎과 같기 때문에 leaf라고 합니다. 그리고 같은 부모 노드에 붙어있는 자식노드를 묶어서 부를 때는 sibling node 형제 노드라고 합니다. 🌳트리의 종류 트리에는 종류들이 많이 있고, 또 형태에 따라서 나뉘기도 한다. 완전이진트리, 정 이진트리, 포화이진트리, 그리고..

자바스크립트 12. 자료구조(Data Structure) - 해시테이블 (Hash Table)

자료구조 4번째 해시테이블을 기록해보자! 📕해시테이블(Hash Table)의 개념 해시 테이블(Hash Table)은 입력받은 키값을 해시함수에 돌려서 반환받은 해쉬코드는 배열의 인덱스로 데이터에 접근하는 자료구조 입니다. 사진을 보면 이해하기가 더 쉽다. 주어지는 key는 해시함수에 들어가게 된다. 해시 함수는 받은 키를 해쉬 코드로 바꾸어주는 역할을 한다. 그렇게 키는 해시 함수를 지나서 해시 코드가 된다. 해시 코드는 인덱스 처럼 저장소(bucket)에서 값을 찾고 접근을 할 수 있게 된다. 이때 접근, 삭제, 검색 등이 가능해진다. 👨🏻‍💻해시테이블 활용 예시 핸드폰 연락처 (이름 검색을 하면 -> 해당번호가 나온다) DNS 확인작업 (웹사이트 주소를 입력하면, 컴퓨터는 그 주소를 IP주소로 변환..