파이썬
-
코딩테스트 연습> 탐욕법(Greedy)> 큰 수 만들기ALGORITHM/Programmers 2020. 7. 22. 22:25
코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 문제설명: number로 주어지는 숫자들 중 k개 만큼 제거 후 남는 숫자들로 가장 큰 수를 만들어야 한다. 단 주의할 점은, 숫자들의 순서를 섞으면 안된다. 즉 앞에서부터 차례대로 제거하며 가장 큰수를 return 해야 한다. [1차 시도] def solution(number, k): number = list(number) cur = 1 ans_len = len(number) while len(number)!= ans_len-k and cur!= len(number): if int(number[cur-1]) < int(number[cur]): h = cur while h!=0 and int(number[h-1]) < int(number[..
-
코딩테스트 연습> 스택/큐> 다리를 지나는 트럭ALGORITHM/Programmers 2020. 7. 18. 18:34
코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이�� programmers.co.kr 문제설명: 다리를 지나려고 대기중인 트럭들의 배열인 truck_weights가 주어지고, 다리가 지탱할 수 있는 트럭의 무게 weight가 주어진다. 그리고 다리의 길이는 bridge_length로 주어지는데 트럭이 움직이는 이동거리라고 볼 수 있다. 다리위의 트럭의 무게를 보면서 트럭이 다리를 지날 수 있는경우와 앞의 트럭들이 다 빠질 때까지 기달리는 로직을 적절히 짜서 문제를 해결할 수 있다. 그러면서 다리를 건너는 트럭들이 한칸씩 움직이..
-
코딩테스트 연습> 연습문제> 숫자의 표현ALGORITHM/Programmers 2020. 7. 15. 01:24
코딩테스트 연습 - 숫자의 표현 Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 programmers.co.kr 문제설명: 숫자 n이 주어지고 1부터 n까지의 연속된 숫자를 활용하여, 합이 n이 되는 경우의 수를 찾는 문제이다. [1차 시도] def solution(n): cnt=0 cur=1 while cur != n+1: temp=0 for i in range(cur,n+1): if temp+i10 (cur=2) 3+4+5 > 10 (cur=3) 4+5+6 > 10 (cur=4) ... 10 = 10 (cur=10) 반복하면서 합이 n이 되는 것을 ..
-
코딩테스트 연습> 연습문제> 피보나치 수ALGORITHM/Programmers 2020. 7. 13. 23:27
코딩테스트 연습 - 피보나치 수 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다. 예를들어 F(2) = F(0) + F(1) = 0 + 1 = 1 F(3) = F(1) + F(2) = 1 + 1 = 2 F(4) = F(2) + F(3) = 1 + 2 = 3 F(5) = F(3) + F(4) = programmers.co.kr 문제설명: n번째 피보나치 수를 구해서 1234567로 나눈 나머지를 return하면 된다. n번째 피보나치 수는 (n-1)번째 피보나치 수 + (n-2)번째 피보나치 수이다. [1차 시도] def fibo(n): if n
-
코딩테스트 연습> 연습문제> 올바른 괄호ALGORITHM/Programmers 2020. 7. 12. 15:56
코딩테스트 연습 - 올바른 괄호 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 ()() 또는 (())() 는 올바른 괄호입니다. )()( 또는 (()( 는 올바르지 않은 괄호� programmers.co.kr 문제설명: 배열 s 에 '(' 또는 ')'가 들어있고, 여는 괄호와 닫는 괄호가 '()'로 만나면 제거해 준다. 이 때, s 배열에 원소가 남아 있다면 짝이 맞지 않으므로 False를 반환하고, 빈 배열로 남는다면 True를 반환한다. [1차 시도] def solution(s): bin = [] for i in s: if not bin and i==')': return False if i=='(': bin.append(i) ..
-
코딩테스트 연습> 힙(Heap)> 더 맵게ALGORITHM/Programmers 2020. 7. 3. 13:00
코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같�� programmers.co.kr 문제설명: scoville 배열에 스코빌 지수가 주어지고, 이 중 가장 맵지 않은 지수와 두 번째로 맵지 않은 지수 즉 가장 낮은 숫자 2개를 뽑아 (최소값+ 두 번째 최소값*2)을 다시 scoville 배열에 넣어주기를 반복한다. 이를 모든 스코빌 지수가 주어진 변수 K보다 큰 값이 될 때까지 반복하면 된다. 단, 모든 변환을 마치고도 K보다 작은 값이 남아있다면 -1을 return 한다. [1차 시도] import heapq def solut..
-
코딩테스트 연습> 연습문제> 핸드폰 번호 가리기ALGORITHM/Programmers 2020. 7. 1. 23:06
코딩테스트 연습 - 핸드폰 번호 가리기 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자 programmers.co.kr 문제설명: phone_number에 숫자가 주어지고 뒤 4자리만 숫자를 나타내고 앞자리는 모두 '*'로 표시해주면 된다. [1차 시도] def solution(phone_number): ans = list('*'*len(phone_number)) ans[-4:len(phone_number)] = phone_number[-4:len(phone_number)] return ''.join(map(str,ans)) 풀이: 우선 phone_numb..
-
코딩테스트 연습> 해시> 완주하지 못한 선수ALGORITHM/Programmers 2020. 6. 29. 23:38
코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수�� programmers.co.kr 문제설명: participant배열과 completion배열에 각각의 선수 이름들이 나열되어 있다. 해당 문제를 풀기 위해서는 2가지 케이스를 볼 수 있는데, 모두 participant에는 이름이 있지만, completion에는 이름이 없는 경우에 해당한다. 즉, 참가는 했지만 완주하지 못한 경우와, 2명의 동명이인 선수가 참가했지만, 1명만 완주를 한 경우이다. 따라서 participant와 completion 배열 내 선수 차이를 확인..