목록전체 글 (152)
호기심 많은 분석가
코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 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 편 이상..
코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr def solution(numbers): numbers = list(map(str, numbers)) numbers.sort(key=lambda x: x*3, reverse=True) return str(int("".join(numbers))) 이번 문제의 풀이는 정말 경이롭다. 총 2가지의 실패를 경험하고 다른 분의 코드를 참고했다. 첫 번째는 str형태는 sort 해줬을 때 앞의 자리 수에 따라..
코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 내 풀이 def solution(array, commands): return [sorted(array[com[0]-1:com[1]])[com[2]-1] for com in commands] 다들 최대한 짧게 코딩하는 것을 좋아해 보여서 한 줄로 코딩해보았다. sort함수가 너무 잘 구현되어 있기 때문에 문제의 설명에 따라 진행하기만 하면 쉽게 해결할 수 있음. 또한 list comprehension은 역시 쓸 때마다 기분이 좋아지는 문법이야.
코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 내 풀이 import heapq def get_sco(d1, d2) : return d1+d2*2 def solution(scoville, K): answer = 0 heapq.heapify(scoville) while True : if len(scoville) == 1 and scoville[0] < K : return -1 first = heapq.heappop(scoville) second = heapq.heappop(scoville) heap..
오늘은 친구의 흥미로운 질문을 다뤄보고자 한다. 이 친구의 사고 방식은 참 배울 점이 많은데, DataFrame을 groupby 시켰을 때는 list의 형태인지, index의 type은 무엇인지, 작업하면서 한번도 의문을 가져본 적 없는 것들을 물어봐서 허를 찔린다. 나도 이런 의문을 항상 품으면서 살아야할텐데, 오늘은 그 중 새로 알게 된 사실에 대해 이야기 해보고자 한다. Intersection 바로 intersection인데, 해석하면 교집합으로 두 그룹 사이에 동시에 존재하는 원소들을 의미한다. Python에서 이 친구를 사용하기 위해서는 유의해야할 점이 한 가지 존재하는데, list형태에서는 작동하지 않아 반드시 set의 형태로 변환해줘야한다는 점이다. 아래와 같이 실행되는 것을 확인할 수 있다..
코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 programmers.co.kr def solution(bridge_length, weight, truck_weights): gone = [] going = [] ready = truck_weights.copy() answer = 1 go_tm = 1 while truck_weights : if len(going)!=0 and going[0][1] == bridge_length : gone.append(going.pop(0)) if len(gone) == len(tr..