본문 바로가기

공부-코딩테스트72

구명보트 (코딩테스트, 프로그래머스, 파이썬) https://programmers.co.kr/learn/courses/30/lessons/42885 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr 나의코드 def solution(people, limit): people.sort() answer = 0 small, big = 0, len(people)-1 while small < big: if people[small] + people[big] 2022. 3. 6.
뉴스 클러스터링 (코딩테스트, 프로그래머스, 파이썬) 문제 https://programmers.co.kr/learn/courses/30/lessons/17677 코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브 programmers.co.kr 나의 코드 def solution(str1, str2): str1_dict={} str2_dict={} str1 = str1.upper() str2 = str2.upper() for i in range(len(str1)-1): target = str1[i:i+2] if target != ''.join(char for char in ta.. 2022. 2. 26.
큰 수 만들기 (코딩테스트, 프로그래머스, 파이썬) 문제 https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 나의 코드(실패) from itertools import combinations def solution(number, k): answer = 0 for i in list(combinations(range(len(number)),k)): tmp=[number[j] for j in range(len(number)) if j not in i] answer=max(answer,int(''.join(tmp))) return str(answer) combinations을 사용해서 제외시킬 위치들에 대한 조합을 for문을 돌린다 i가 [0,1]일.. 2022. 2. 24.
약수 구하기 def divisor(num): arr = [] for i in range(1,int(num**(0.5))+1): if num % i == 0: arr.append(i) if i**2 != num: arr.append(num//i) return sorted(arr) divisor(10) => 결과 [1,2,5,10] n의 약수를 구할 때 n이하의 수를 전부 확인할 필요가 없다. n의 제곱근 이하의 수에서 탐색을 하여 나누었을 때 나머지가 없는 값들이 약수라고 할 수 있으며 이 때 약수* x = num 이여야 하는데 x또한 약수가 될 것이기에 x도 arr에 추가한다. 단 num이 제곱으로 만들어지는 수일 경우 x가 중복해서 arr에 들어갈 수 있기 때문에 이러한 경우를 배제하고 arr를 만들어가는 식으로 .. 2022. 2. 21.
카펫 (코딩테스트, 프로그래머스, 파이썬) 문제 https://programmers.co.kr/learn/courses/30/lessons/42842 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 programmers.co.kr 나의 코드 def solution(brown, yellow): div_arr1,div_arr2 = divisor(brown + yellow) for a1,a2 in zip(div_arr1,div_arr2): if (a1-2) * (a2-2) == yellow: return [a2,a1] def divisor(num): arr1 = [] arr2 = [].. 2022. 2. 21.
방문 길이 (코딩테스트, 프로그래머스, 파이썬) 문제 https://programmers.co.kr/learn/courses/30/lessons/49994 코딩테스트 연습 - 방문 길이 programmers.co.kr 나의 코드 def solution(dirs): answer = [] ways={'U':[0,1],'D':[0,-1],'L':[-1,0],'R':[1,0]} x, y = 0, 0 for i in dirs: before_x, before_y = x, y after_x, after_y = x+ways[i][0], y+ways[i][1] if min(after_x, after_y)>=-5 and max(after_x, after_y) (2,1) 와 (2,1) -> (3,1)을 일반적으로 list로 순서대로 정렬한다면 다른 길로 인식하지만, 정렬.. 2022. 2. 20.