본문 바로가기
관리자

Computer Science

(59)
[LeetCode] 2. Add Two Numbers : LinkedList 문제 You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order, and each of their nodes contains a single digit. Add the two numbers and return the sum as a linked list. You may assume the two numbers do not contain any leading zero, except the number 0 itself. Example 1: Input: l1 = [2,4,3], l2 = [5,6,4] Output: [7,0,8] Explanation: 34..
[LeetCode] 1. Two Some 문제 난이도 Easy Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target. You may assume that each input would have exactly one solution, and you may not use the same element twice. You can return the answer in any order. Example 1: Input: nums = [2,7,11,15], target = 9 Output: [0,1] Output: Because nums[0] + nums[1] == 9, we return [0,..
1. 컴퓨터 내부의 언어 체계 - 비트와 논리연산, 정수 1. 언어란 무엇인가 언어는 기호의 집합으로 구성된다. 그리고 언어가 제대로 작동할려면 의사소통하는 당사자들이 모두 같은 문맥(context)를 공유해야한다. Toto 라는 단어는 '오즈의 마법사'에 나오는 개를 뜻하기도 하지만 변기를 생산하는 일본 기업을 뜻할 수도 있다. 많은 프로그래밍 언어에서 context를 사용하는데, 이런 개념을 알고 이해하면 이해가 더 쉬운 것 같다. 예를 들어 자바 스프링에서는 context에 bean들을 저장하는데, 이것은 특정 객체 안에서 사용할 다른 객체의 정확한 뜻을 저장해놓는 것이라고 생각하면 도움이 될 것 같다. moneyTransferService라는 계좌이체 객체 속에서 accountRepository라는 저장소 객체가 userAccountRepository ..
Prm 18 : getItemFromTwoSortedArrays / 이진탐색 문제 길이가 m, n이고 오름차순으로 정렬되어 있는 자연수 배열들을 입력받아 전체 요소 중 k번째 요소를 리턴해야 합니다. 입력 인자 1 : arr1 자연수를 요소로 갖는 배열 arr1.length는 m 인자 2 : arr2 자연수를 요소로 갖는 배열 arr2.length는 n 인자 3 : k number 타입의 0 이상의 정수 출력 number 타입을 리턴해야 합니다. 주의사항 두 배열의 길이의 합은 1,000,000 이하입니다. 어떤 배열 arr의 k번째 요소는 arr[k-1]을 의미합니다. 입출력 예시 let arr1 = [1, 4, 8, 10]; let arr2 = [2, 3, 5, 9]; let result = getItemFromTwoSortedArrays(arr1, arr2, 6); cons..
Prm 12 : Tree BFS treeBFS 문제 임의의 tree를 구성하는 노드 중 하나의 Node 객체를 입력받아, 해당 노드를 시작으로 너비 우선 탐색(BFS, Breadth First Search)을 합니다. 이 때, 탐색되는 순서대로 노드의 값이 저장된 배열을 리턴해야 합니다. 입력 인자 1 : node 'value', 'children' 속성을 갖는 객체 (Node) 'node.value'는 number 타입 'node.children'은 Node를 요소로 갖는 배열 출력 배열을 리턴해야 합니다. 주의사항 생성자 함수(Node)와 메소드(addChild)는 변경하지 않아야 합니다. 입출력 예시 let root = new Node(1); let rootChild1 = root.addChild(new Node(2)); let ..
Prm 17 : balancedBrackets / stack, in 연산자 객체 적용 balancedBrackets 문제 문자열을 입력받아 문자열 내의 모든 괄호의 짝이 맞는지 여부를 리턴해야 합니다. 다음 단계에 맞춰 함수를 작성해 보세요 괄호의 종류를 단 한가지로 한정합니다. 괄호의 종류를 늘려 모든 종류의 괄호에도 작동하도록 합니다. 괄호를 제외한 문자열이 포함된 경우에도 작동하도록 합니다. 입력 인자 1 : str string 타입의 괄호가 포함된 문자열 출력 boolean 타입을 리턴해야 합니다. 주의사항 괄호의 종류는 (, )만 고려합니다. 괄호는 먼저 열리고((), 열린만큼만 닫혀야()) 합니다. 빈 문자열을 입력받은 경우, true를 리턴해야 합니다. 입출력 예시 let output = balancedBrackets('('); console.log(output); // //..
quickSort / 퀵정렬 1. 소개 quicksort는 1960년에 찰스 앤서니 리처드 호어라는 사람이 처음 제안했고, 수정과 보완을 거쳐 완성된 알고리즘이라고 한다. 이름 그대로 아직까지도 가장 빠른 알고리즘 중 하나라고 한다. 문제를 잘게 쪼개고, 쪼개진 문제들을 재귀적으로 해결하는 Divide and Conquer 전략을 이용한다. 2가지 풀이법이 있는데, Not in place, in place 방법이 있다. 인자로 받아오는 정렬되지 않은 배열 외에 외부의 배열을 만드는 방법이 not in place, 인자로 받아오는 배열 내부에서 바로 정렬하는 방법이 in place 방법이다. 예상할 수 있듯이 not in place 방법은 추가적인 메모리가 요구되므로 in place 방법이 선호된다. 시간복잡도는 평균적으로는 O(Nl..
Prm 15 : primePassword / bfs - queue, 각 자리수 1씩 올리기, [n++], fill primePassword 문제 다음의 조건을 만족하면서 현재의 비밀번호('curPwd')를 새 비밀번호(newPwd)로 변경하는 데 필요한 최소 동작의 수를 리턴해야 합니다. 한 번에 한 개의 숫자만 변경가능하다. 4자리의 소수(prime)인 비밀번호로만 변경가능하다. 정리하면, 비밀번호가 계속 소수를 유지하도록 숫자 한 개씩을 바꿔갈 때 현재 비밀번호에서 새 비밀번호로 바꾸는 데 최소 몇 개의 숫자를 변경해야 하는지를 리턴해야 합니다. 입력 인자 1 : curPwd number 타입의 1,000 이상 9,999 이하의 자연수 인자 2 : newPwd number 타입의 1,000 이상 9,999 이하의 자연수 출력 number 타입을 리턴해야 합니다. 주의사항 4자리인 소수는 1,000 이상의 소수를 ..