본문 바로가기

반응형

Computer/Coding Test

(33)
코딩테스트 문제 (17) - 실패율 카카오 2019 블라인드 코딩테스트 기출문제입니다. 문제 1. N = 5, stages = [2,1,2,6,2,4,3,3] => [3,4,2,1,5] 2. N = 4, stages = [4,4,4,4,4] => [4,1,2,3] 풀이 1번 케이스는 다음과 같습니다. 1번 문제에 대해서 8명에 사용자가 도전하여 1명의 사용자가 클리어를 하지 못했으므로 실패율은 1/8이 됩니다. 2번 문제에 대해서는 7명의 사용자가 도전하여 3명이 클리어를 하지 못했으므로 실패율은 2/7이 됩니다. 이런식으로 각 문제에 대해 실패율을 계산하여 실패율이 높은 스테이지부터 나열하는 문제입니다. 각 stage마다 실패율을 담은 배열을 작성한 뒤 정렬하면 간단하게 풀리는 문제입니다. kaggle.com의 notebook으로 작성한..
코딩테스트 문제 (16) - 뉴스 클러스터링 카카오 2018 블라인드 코딩테스트 문제입니다. 문제 문제는 입력으로 들어오는 두 문자열에 대해 자카드 유사도 (Jaccard Similaraity)를 계산하는 문제입니다. 1. str1 = 'FRANCE', str2 = 'french' => 16384 2. str1 = 'handshake', str2 = 'shake hands' => 65536 3. str1 = 'aa1+aa2', str2 = 'AAAA12' => 43690 4. str1 = 'E=M*C^2', str2 = 'e=m*c^2' => 65536 풀이 먼저, 자카드 유사도는 집합 간의 유사도를 검사하는 여러 방법 중의 하나로 집합 $A,B$에 대해서 $J(A,B) = INTERSECTION(A,B) / UNION(A,B)$ 로 정의됩니다. ..
코딩테스트 문제 (15) - 캐시 카카오 2018 블라인드 코딩테스트 기출문제입니다. 문제 1. cacheSize = 3, cities = ["Jeju", "Pangyo", "Seoul", "NewYork", "LA", "Jeju", "Pangyo", "Seoul", "NewYork", "LA"] => 50 2. cacheSize = 3, cities = ["Jeju", "Pangyo", "Seoul", "Jeju", "Pangyo", "Seoul", "Jeju", "Pangyo", "Seoul"] => 21 3. cacheSize = 2, cities = ["Jeju", "Pangyo", "Seoul", "NewYork", "LA", "SanFrancisco", "Seoul", "Rome", "Paris", "Jeju", "NewYor..
코딩테스트 문제 (14) - 다트 게임 카카오 2018 블라인드 코딩테스트 기출문제입니다. 문제 1. '1S2D*3T' => 37 2. '1D2S#10S' => 9 3. '1D2D0T' => 3 4. '1S*2S*3S' => 23 5. '1D#2D*3S' => 5 6. '1T2D3D#' => -4 7. '1D2S3T*' => 59 풀이 문자열 처리를 체크하는 문제입니다. 1번 케이스 '1S2D*3T'를 살펴보면 '1^1*2 + 2^2*2 + 3^3' 으로 37이 나오게 되는데요. 입력 string에 대해 ['1S', '2D*', '3T']로 나누고 스타상과 아차상의 효과를 문제 조건대로 바꾼 후에 파이썬의 eval() 함수를 이용하면 될 것 같습니다. kaggle.com의 notebook으로 작성한 풀이는 다음과 같습니다. 홍머스 정리 난이도..
코딩테스트 문제 (13) - 부분 집합 문제 입력으로 주어진 배열에 대해 부분 집합을 return하는 문제입니다. 1. array = [1,2,3] => [[],[1],[2],[3],[1,2],[1,3],[2,3],[1,2,3]] 풀이 먼저 결과 형식은 리스트 안에 부분집합을 추가하는 형태입니다. 배열을 for 루프로 순회하면서 공집합부터 ([]) 추가하고 첫 번째 원소 1에 대해서 [1], [1,2], [1,2,3], [1,3] 을 추가하고 그 다음 원소 2에 대해 [2],[2,3] 을 추가하는 식을 생각해볼 수 있겠네요. 바로 그래프의 깊이우선탐색 (dfs) 를 이용하면 풀이가 가능합니다. kaggle.com의 notebook으로 작성한 풀이는 다음과 같습니다. 홍머스 정리 난이도: 중, 그래프 구조를 생각해야 한다. 참조 , p355-3..
코딩테스트 문제 (12) - 상위 K 빈도 요소 문제 간단한 문제로 입력으로 들어온 배열에 대해 K 번 이상 등장하는 요소를 추출하는 문제입니다. 1. array = [1,1,1,2,2,3], K = 2 => [1,2] 풀이 먼저 배열의 각 원소를 세야할 것 같습니다. for 루프를 이용해도 되지만 collections 모듈에는 배열의 빈도 수를 계산해주는 Counter 라는 함수가 존재합니다. Counter 함수는 해당 원소를 키, 빈도 수를 값으로 하는 딕셔너리를 return합니다. K번 이상 등장하는 원소를 추출하는 것이니 빈도 수가 가장 높은 것부터 K까지 추출하면 될 것 같습니다. 우선순위 순으로 추출하므로 파이썬의 heapq 모듈을 활용하면 될 것 같습니다. kaggle.com의 notebook으로 작성한 풀이는 다음과 같습니다. 홍머스 정..
코딩테스트 문제 (11) - 비밀 지도 카카오 2018년 블라인드 코딩테스트 1번 문제입니다. 바로 문제부터 보겠습니다. 문제 1. array1 = [9,20,28,18,11], array2 = [30,1,21,17,28] => ['#####','# # #','### #','# ## ','#####'] 2. array1 = [46,33,33,22,31,50], array2 = [27,56,19,14,14,10] => ['######','### # ','## ## ',' #### ',' #####','### # '] 풀이 지도의 각 위치마다 두 개의 지도에서 어느 하나라도 '#' 이 있을 경우 '#'이고 모두 공백일 경우 공백으로 처리하는 부분에서 OR (|) 오퍼레이션을 사용하는 것을 알 수 있습니다. 파이썬의 bin은 정수를 이진화를 시켜줍..
코딩테스트 문제 (10) - 배열의 K 번째 큰 요소 제목 그대로 주어진 배열이 있을 때, 배열의 K 번째 큰 요소를 return하면 되는 문제입니다. 문제 1. array=[3,2,3,1,2,4,5,5,6], K=4 => 4 풀이 주어진 배열의 우선순위를 기반으로 가장 큰 값부터 K번 추출하면 되는 간단한 문제입니다. 힙을 사용해 쉽게 구현할 수 있습니다. kaggle.com의 notebook으로 작성한 풀이는 다음과 같습니다. 홍머스 정리 힙, heapq 난이도: 하 참조 , p456-457

반응형