Sapphire9 개발 일지
프로그래머스 - 유사 칸토어 비트열 (JavaScript)
알고리즘/기타 2023. 4. 25. 19:28

문제 https://school.programmers.co.kr/learn/courses/30/lessons/148652 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 생각해보기 n = 1인 유사 칸토어 비트열을 만들기 위한 연산 횟수 : 1번 n = 2인 유사 칸토어 비트열을 만들기 위한 연산 횟수 : 1 + 5^1번 n = 3인 유사 칸토어 비트열을 만들기 위한 연산 횟수 : 1 + 5^1번 + 5^2번 n번째 유사 칸토어 비트열을 만들기 위해서는 1 + 5^1 + ... + 5^(n - 1)번의 연산이 필요하다. 또한, 해당 비트열 안에서 1의 개수..

백준 1963번 - 소수 경로 (JavaScript)
알고리즘/BFS & DFS 2023. 4. 21. 10:06

생각해보기 에라토스테네스의 체 대량의 소수를 한꺼번에 판별하고자 할 때 사용 loose upper-bound : O(NlogN) proper upper-bound : O(Nlog(logN)) 2이상 N이하인 범위 내 모든 소수를 구할 때, 에라토스테네스의 체를 이용할 수 있다. 이때, 2이상 √N이하인 소수의 배수들을 해당 범위 내에서 제외시키는 방식으로 구할 수 있다. 또한 소수의 배수들을 제외시킬 때, 해당 소수의 제곱부터 시작하면 된다. 이 이유는 아래에서 설명한다. loose upper-bound 2이상 N이하의 모든 자연수에 대해, 소수의 배수들을 제외하는 연산의 횟수를 계산해보자. 먼저 근사화를 통해 해당 범위 내 모든 소수의 배수가 아닌 모든 자연수의 배수를 제외시키는 상황을 가정한다. 예를..

프로그래머스 - 부대복귀 (JavaScript)
알고리즘/BFS & DFS 2023. 4. 14. 17:41

문제 https://school.programmers.co.kr/learn/courses/30/lessons/132266 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 생각해보기 시도해본 방법 1. shift 연산 → queue 구현 2. 방문 체크 자료구조 : 배열 → Map 객체 3. 인접 리스트 자료구조 : 2차원 배열 → Map 객체 index를 알고 있으면 배열 또한 탐색을 O(1)로 수행할 수 있으므로 차이가 없었다. 그러나 2, 3의 경우 길이 없는 지역에 대해 (key, value)를 할당하지 않으므로 특정 조건 하에(길이 없는 지역이 많을..

프로그래머스 - 표현 가능한 이진트리 (JavaScript)
알고리즘/BFS & DFS 2023. 4. 12. 01:02

생각해보기 포화 이진 트리는 노드의 개수가 2^n - 1개이다. 더미 노드는 주어진 수를 변경하면 안되므로 이진수로 변환된 문자열의 앞에 추가된다. 부모 노드가 0인데 자식 노드가 1인 경우, 이진 트리가 될 수 없다. 부모 노드와 자식 노드가 모두 0인 경우는 가능 더미 노드의 개수 파악하기 더미 노드의 개수를 찾는 과정을 반복한다. 이를 통해 규칙성을 파악하고 식으로 나타내보자. 주어진 수 1 2 3 4 5 6 7 8 9 A 1 10 11 100 101 110 111 1000 1001 B 1 2 2 3 3 3 3 4 4 C 1 10 10 11 11 11 11 100 100 D 1 2 2 2 2 2 2 3 3 A : 주어진 수에 대한 이진수 변환 B : A의 길이 C : B에 대한 이진수 변환 D : ..

프로그래머스 - 인사고과 (JavaScript)
알고리즘/기타 2023. 3. 28. 22:41

문제 완호네 회사는 연말마다 1년 간의 인사고과에 따라 인센티브를 지급합니다. 각 사원마다 근무 태도 점수와 동료 평가 점수가 기록되어 있는데 만약 어떤 사원이 다른 임의의 사원보다 두 점수가 모두 낮은 경우가 한 번이라도 있다면 그 사원은 인센티브를 받지 못합니다. 그렇지 않은 사원들에 대해서는 두 점수의 합이 높은 순으로 석차를 내어 석차에 따라 인센티브가 차등 지급됩니다. 이때, 두 점수의 합이 동일한 사원들은 동석차이며, 동석차의 수만큼 다음 석차는 건너 뜁니다. 예를 들어 점수의 합이 가장 큰 사원이 2명이라면 1등이 2명이고 2등 없이 다음 석차는 3등부터입니다. 각 사원의 근무 태도 점수와 동료 평가 점수 목록 scores이 주어졌을 때, 완호의 석차를 return 하도록 solution 함..

프로그래머스 - 시소 짝꿍 (JavaScript)
알고리즘/기타 2023. 3. 19. 18:53

문제 설명 어느 공원 놀이터에는 시소가 하나 설치되어 있습니다. 이 시소는 중심으로부터 2(m), 3(m), 4(m) 거리의 지점에 좌석이 하나씩 있습니다. 이 시소를 두 명이 마주 보고 탄다고 할 때, 시소가 평형인 상태에서 각각에 의해 시소에 걸리는 토크의 크기가 서로 상쇄되어 완전한 균형을 이룰 수 있다면 그 두 사람을 시소 짝꿍이라고 합니다. 즉, 탑승한 사람의 무게와 시소 축과 좌석 간의 거리의 곱이 양쪽 다 같다면 시소 짝꿍이라고 할 수 있습니다. 사람들의 몸무게 목록 weights이 주어질 때, 시소 짝꿍이 몇 쌍 존재하는지 구하여 return 하도록 solution 함수를 완성해주세요. 제한 사항 2 ≤ weights의 길이 ≤ 100,000 100 ≤ weights[i] ≤ 1,000 몸..

article thumbnail
프로그래머스 - 숫자 변환하기 (JavaScript)
알고리즘/BFS & DFS 2023. 3. 19. 00:55

문제 설명 자연수 x를 y로 변환하려고 합니다. 사용할 수 있는 연산은 다음과 같습니다. x에 n을 더합니다 x에 2를 곱합니다. x에 3을 곱합니다. 자연수 x, y, n이 매개변수로 주어질 때, x를 y로 변환하기 위해 필요한 최소 연산 횟수를 return하도록 solution 함수를 완성해주세요. 이때 x를 y로 만들 수 없다면 -1을 return 해주세요. 제한사항 1 ≤ x ≤ y ≤ 1,000,000 1 ≤ n

리트 코드 - Symmetric Tree (JavaScript)
알고리즘/BFS & DFS 2023. 2. 23. 23:00

풀이 1) recursion /** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 : val) * this.left = (left===undefined ? null : left) * this.right = (right===undefined ? null : right) * } */ /** * @param {TreeNode} root * @return {boolean} */ var isSymmetric = function(root) { return isSame(root.left, root.right); }; var isSame = function (leftr..

검색 태그