전체 글
-
(프로그래머스) 코딩테스트 연습 > 그리디 > 저울코딩연습 2020. 3. 25. 00:12
추의 무게가 배열로 주어지고, 추가 측정할 수 없는 무게의 최소 값을 구하는 문제이다. 예를 들어 1, 2, 3 짜리 추가 주어졌다면, 1, 2, 3은 각각의 추로 무게를 달면 되고 4(1+3), 5(2+3), 6(1+2+3) 이런 식으로 측정이 가능하다. 그렇다면 정답은 7이 된다. 만약에 2,3,4가 주어졌다고 생각하면? 1이 정답이 된다. def solution(weight): weight.sort() if weight[0] > 1: return 1 for answer in range(1, sum(weight)+2, 1): temp = answer if temp in weight: continue else: for i in range(len(weight)-1, -1, -1): if temp < we..
-
(프로그래머스) 코딩테스트 연습 > 그리디 > 체육복코딩연습 2020. 3. 19. 23:33
체육시간에 체육복을 도둑맞은 학생들이 있고, 여벌을 갖고 있는 학생들이 어떻게든 체육복을 빌려줘서 체육수업을 참가하게 한다. 이때 가장 많이 참여한 인원수를 구하는 문제이다. 이 문제에 몇 가지 주의해야 할 조건이 있는데, 도둑맞은 학생들의 번호는 중복되지 않고, 여벌을 갖고 있는 학생들의 번호도 중복되지 않는다. 여 별을 갖고 있는 학생도 도둑을 맞을 수 있으며, 그러면 여벌은 자신이 챙기고 다른 학생에게 빌려주지 못한다. 빌려주는 것도 자신의 번호에서 +1, -1에 해당하는 학생에게만 가능하고 학생 번호는 1~총원 범위 내에서 주어지고 총원의 범위는 2~30까지이다. 앞에서의 조건들을 대충 보고 문제를 풀면 매우 고생하게 된다. 플밍에서 주어진 제한 조건이 늘 핵심인 것 같다. def solution..
-
(프로그래머스) 코딩테스트 연습 > 해시 > 전화번호 목록코딩연습 2020. 3. 19. 01:18
전화 번호부가 주어지고 한 번호가 다른 번호의 접두사인 경우 False 그렇지 않으면 True를 반환하는 문제이다. 이문제가 왜 해시로 분류되는지 잘 모르겠다. 전화번호부라는 것 때문인가... 여튼 해시로 어떻게 풀어야할지 잘몰라서 그냥 풀었다. from itertools import combinations def solution(phone_book): for two in combinations(phone_book, 2): num = sorted(list(two)) a, b = num[0], num[1] diff = int(b[::-1]) - int(a[::-1]) div = 10**len(num[0]) if diff % div == 0: return False return True 일단 전화번호 두개를..