목록전체 글 (132)
fffo
문제 문제 설명 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브는 사용자들이 편리하게 다양한 뉴스를 찾아볼 수 있도록 문제점을 개선하는 업무를 맡게 되었다. 개발의 방향을 잡기 위해 튜브는 우선 최근 화제가 되고 있는 "카카오 신입 개발자 공채" 관련 기사를 검색해보았다. 카카오 첫 공채..'블라인드' 방식 채용 카카오, 합병 후 첫 공채.. 블라인드 전형으로 개발자 채용 카카오, 블라인드 전형으로 신입 개발자 공채 카카오 공채, 신입 개발자 코딩 능력만 본다 카카오, 신입 공채.. "코딩 실력만 본다" 카카오 "코딩 능력만으로 2018 신입 개발자 뽑는다" 기사..
문제 문제 설명 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다. '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요. 제한사항 문자열 s의 길이 : 100,000 이하의 자연수 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다. 입출력 예 s answer "()()" true "(())()" true ")()(" false "(()(" false 입출력 ..
해시 테이블 해시 해시 : 데이터를 새로운 형태의 데이터로 바꿈 해시 테이블 : 데이터의 해시 값을 테이블 내의 주소로 이용 길이가 서로 다른 입력 데이터에 대해 일정한 길이의 출력을 만들 수 있음 나눗셈법 해시 함수가 테이블 크기로 키값을 나눈 나머지를 반환 나눗셈법으로 구현된 해시 함수가 테이블 내의 공간을 효율적으로 사용하기 위해서는 테이블의 크기를 2의 제곱수와 거리가 먼 소수로 지정 하는 것이 좋음 자릿수 접기 숫자 자릴를 충돌과 클러스터 (Collision, Cluster) 충돌 : 키 값이 다른 두 자료에 대해 해시 함수가 같은 해시 값을 낼 때 클러스터 : 해시 테이블 내의 일부 지역에 데이터가 모이는 문제 충돌 해결법 체이닝 충돌이 일어날 때 데이터를 해당 주소에 있는 링크드 리스트에 삽..
타입 변환과 단축 평가 타입 변환 명시적 타입 변환 == 타입 캐스팅 암묵적 타입 변환 == 타입 강제 변환(type coercion) 암묵적 타입 변환 맥락에 맞춰서 js엔진이 암묵적으로 바꿔줌 적절한 암묵적 타입 변환은 가독성에 기여할 수 있음 12 + '' // "12" true + '' // "true" NaN + '' // "NaN" [10,20] + '' // "10,20" +"32" // 32 +null // 0 +true // 1 +false // 0 +undefined // NaN +[] // 0 +[1,2] // NaN Falsy 값들 false undefined null 0, -0 NaN '' (빈 문자열) 명시적 타입 변환 표준 빌트인 생성자 함수를 new 연산자 없이 호출 빌트인 ..
문제 문제 설명 자연수 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를 사용하면 깊..