목록Programming (128)
fffo
문제 문제 설명 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다. 조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수 입니다. 예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다. 자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요. 제한 사항 n은 1,000,000 이하의 자연수 입니다. 입출력 예 n result 78 83 15 23 입출력 예 설명 입출력 예#1 문제 예시와 같습니다. 입출력 예#2 15(1111)의 다음 큰..
문제 문제 설명 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 수 있으며, 다리는 weight 이하까지의 무게를 견딜 수 있습니다. 단, 다리에 완전히 오르지 않은 트럭의 무게는 무시합니다. 예를 들어, 트럭 2대가 올라갈 수 있고 무게를 10kg까지 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다. 경과 시간 다리를 지난 트럭 다리를 건너는 트럭 대기 트럭 0 [] [] [7,4,5,6] 1~2 [] [7] [4,5,6] 3 [7] [4] [5,6] 4 [7] [..
우선순위 큐와 힙 힙 힙 순서 속성(Heap Order Property)를 만족하는 완전 이진 트리 힙을 이용해 우선순위 큐를 구현할 수 있음 힙 삽입 힙의 최고 깊이, 최 우측에 새 노드 추가, 완전 이진 트리를 만족 시켜야 함 삽입한 노드를 부모 노드와 비교 후 부모 노드보다 우선순위가 높으면 부모 노드와 교환 (반복) 힙 제거 루트 노드가 우선순위가 가장 높기 때문에 루트 노드를 제거 최하위 최우측 노드를 루트에 넣고 자식과 우선순위 비교하면서 내려가기(반복) 힙 구현 보통 트리를 구현하는 링크드 리스트는 트리 최하위 최우측을 바로 알아내기가 어려움 배열을 이용, 자식 노드로의 링크는 인덱스값 * 2로 구현
제어문 switch 문 fall through : 평가 결과와 일치하는 case문으로 실행 흐름을 이동하지만 이후의 모든 switch문 안에 있는 코드를 실행하는 것 if ...else 문과 비교해서 가독성이 더 좋은 것을 선택하여 적절히 사용 break 문 중첩된 for문에서 바깥 for문을 탈출 하려면 lable을 사용. 하지만 레이블 문은 프로그램의 흐름을 복잡하게 하고 가독성을 나쁘게 할 수 있으므로 지양 outer: for(let i = 0; i < 3; i++) { for (let j = 0; j < 3; j++) { if(something[i][j] === 3) break outer; } } continue 문 if문 내에서 실행해야 할 코드가 한 줄 이상일 때 continue를 사용하면 깊..
탐색 순차 탐색 자기 구성 순차 탐색 자주 사용되는 요소를 앞에 배치함으로써 순차 탐색의 효율을 높임 전진 이동법 : 한 번 탐색된 요소를 집합의 가장 앞에 위치 전위법 : 탐색된 요소를 바로 이전 요소와 교환 계수법 : 각 요소가 탐색된 수를 저장해 해당 수의 내림차순으로 요소를 재정렬 이진 탐색 정렬된 집합의 중앙값과 탐색값을 비교해 작다면 나머지 왼쪽을 대상으로 다시 이진탐색, 크다면 반대 이진 탐색 트리 왼쪽 자식 트리는 자신보다 작고 오른쪽 자식 트리는 자신보다 큰 이진 트리 이진 탐색을 위한 자료구조 트리의 각 노드는 중앙 요소임 삽입 시 이진 탐색을 수행, 조건에 맞는 리프 노드에 삽입 삭제 시 리프 노드가 아닌 경우 자식 노드를 적절하게 부모 노드에게 연결 삭제될 노드의 오른쪽 자식 노드의..
연산자 할당문은 값으로 평가되는 표현식인 문, 할당된 값으로 평가됨 동일 비교 연산자(==)는 타입을 체크하지 않으므로 예측하기 어려운 결과가 나올 수 있음 → 일치 비교 연산자(===) 사용 권장 NaN는 자신과 일치하지 않는 유일한 값 NaN === NaN; // → false 내장 함수 isNaN를 사용해야 함 isNaN(NaN); // → true Object.is 메서드 : 예측 가능한 정확한 비교 결과 반환 -0 === +0 // true Object.is(-0, +0) // false NaN === NaN // false Object.is(NaN, NaN) // true // 이외에는 일치 비교 연산자(===)와 같음 null을 확인 할 때는 typeof함수 대신 일치 비교 연산자(===)를..
문제 문제 설명 파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램의 과거 버전을 모두 담고 있어, 이름 순으로 정렬된 파일 목록은 보기가 불편했다. 파일을 이름 순으로 정렬하면 나중에 만들어진 ver-10.zip이 ver-9.zip보다 먼저 표시되기 때문이다. 버전 번호 외에도 숫자가 포함된 파일 목록은 여러 면에서 관리하기 불편했다. 예컨대 파일 목록이 ["img12.png", "img10.png", "img2.png", "img1.png"]일 경우, 일반적인 정렬은 ["img1.png", "img10.png", "img12.png", "img2.png"] 순이 되지만,..
문제 문제 설명 H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다. 어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요. 제한사항 과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다. 논문별 인용 횟수는 0회 이상 10,000회 이하입니다. 입출력 예 citationsr..