목록Coding/Coding Test & Algorithm (60)
호기심 많은 분석가
Weather Observation Station 6 | HackerRank Query a list of CITY names beginning with vowels (a, e, i, o, u). www.hackerrank.com select city from station where city regexp '^[a|e|i|o|u]' 오랜만에 SQL 연습을 위해 사이트를 찾아보던 중 hackerrank라는 좋은 사이트를 발견했다. Python으로 구현하면 간단하게 했을 것 같은데 SQL에서는 starts with를 어떻게 구할 수 있을까? LIKE를 사용하면 간단하지만 이번 문제는 후보군이 있다. 모든 후보군에 대해서 LIKE를 사용해주는 건 아름답지 않으니 새로운 방식을 고민해보자. 그러던 중 찾은 것이 ..
코딩테스트 연습 - 같은 숫자는 싫어 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 programmers.co.kr from collections import deque def solution(arr): arr = deque(arr) answer = [] answer.append(arr.popleft()) while arr : input_val = arr.popleft() if answer[-1] != input_val : answer.append(input_val) return answer 여러 방법으로 풀다가 효율성에서 걸리던 와중 가장 좋은 풀..
코딩테스트 연습 - 3진법 뒤집기 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수 programmers.co.kr 내 풀이 def solution(n): answer = "" k = 0 while n/3**k >= 1 : k += 1 k -= 1 while k > -1 : quo, n = divmod(n, 3**k) answer += str(quo) k -= 1 k = 0 result = 0 for i in answer : result += int(i)*(3**k) k += 1 return result 지문에 적혀있는 순서대로 ..
코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브 programmers.co.kr 내 풀이 import re def solution(str1, str2): str1 = [str1[i:i+2] for i in range(len(str1)-1)] str1 = [re.sub('[^a-z]', '', i.lower()) for i in str1] str1 = [i for i in str1 if len(i)==2] str2 = [str2[i:i+2].lower() for i in range(len(str2)-1)] str2 = [..
코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr import math def solution(progresses, speeds): answer = [] while progresses : result = 0 time = math.ceil((100-progresses[0])/speeds[0]) progresses = [progresses[i]+time*speeds[i] for i in range(len(progresses))] for i in range(len(progresses)) : if progres..
코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr def solution(answers): answer = [0, 0, 0] result = [] su_1 = [1, 2, 3, 4, 5]*8 su_2 = [2, 1, 2, 3, 2, 4, 2, 5]*5 su_3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]*4 for i in range(len(answers)) : j = i%40 if answers[i]==su_1[j] : answer[0] += 1 if answers[i]==su_2[j] : an..
코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr def is_prime(x): import math if x
코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 programmers.co.kr def solution(brown, yellow): answer = [] by = brown+yellow for i in range(1, int(by**0.5)+1) : if by%i==0 : answer.append([by//i, i]) return [i for i in answer if (i[0]-2)*(i[1]-2) == yellow][0] 오랜만에 수학 문제를 만나서 반가웠다. 조금의 센스를 발휘하면 쉽게 해결할 수 있는데, 테두리가 갈색이라 했으므로..
코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr def solution(prices): answer = [] for i in range(len(prices)) : for j in range(i, len(prices)) : if prices[i] > prices[j] : answer.append(j-i) break if j==len(prices)-1 : answer.append(j-i) return answer 내 풀이 예상치도 못하게 이중 for문으로 해결돼서 놀랐다...
코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr 내 풀이 def solution(citations): for ind in range(len(citations)+1)[::-1] : if sum([1 if i>=ind else 0 for i in citations]) >= ind: return ind 우선 문제의 내용이 너무 어려웠다. 테스트 케이스를 보고는 바로 이해하지 못했는데, 위키백과를 통해 완벽히 이해할 수 있었다. 1부터 하나씩 커가면서 n이상 인용된 논문이 n 편 이상..