알고리즘
-
[모두를 위한 컴퓨터 과학] Ch4. 알고리즘(Algorithm)Study/BoostCourse 2021. 11. 13. 21:56
https://www.boostcourse.org/cs112/joinLectures/41307 모두를 위한 컴퓨터 과학 (CS50 2019) 부스트코스 무료 강의 www.boostcourse.org 💃 해당 강의를 듣고 스터디용으로 정리한 내용들입니다 💃 👉 이전 강의 https://ninano1109.tistory.com/189 [모두를 위한 컴퓨터 과학] Ch3. 배열(Array) https://www.boostcourse.org/cs112/joinLectures/41307 모두를 위한 컴퓨터 과학 (CS50 2019) 부스트코스 무료 강의 www.boostcourse.org 💃 해당 강의를 듣고 스터디용으로 정리한 내용들입니다 💃 https:.. ninano1109.tistory.com 0) 알고리..
-
[모두를 위한 컴퓨터 과학] Ch1. 컴퓨팅 사고(Computational Thinking)Study/BoostCourse 2021. 10. 11. 22:08
https://www.boostcourse.org/cs112/joinLectures/41307 모두를 위한 컴퓨터 과학 (CS50 2019) 부스트코스 무료 강의 www.boostcourse.org 💃 해당 강의를 듣고 스터디용으로 정리한 내용들입니다 💃 1. Computational Thinking 1) 2진법 computer science: to solve problems input -> [] -> output binary: 0과 1의 조합 bit(비트): 2진법에서 하나의 자릿수를 나타냄(binary digit) 비트 한개로는 많은 양의 데이터를 나타내기에는 역부족 ex) 8bit = 1 Byte => 여러 숫자의 조합을 나타내기 위해 비트열을 사용함 bit 1개는 0 or 1로 표현될 수 있기에,..
-
코딩테스트 연습> 탐욕법(Greedy)> 구명보트ALGORITHM/Programmers 2020. 8. 14. 07:00
코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr 문제설명: people로 주어지는 배열에 사람들의 몸무게가 주어지고, limit 변수로 구명보트의 제한 무게가 주어진다. 구명보트 1개는 한 번에 최대 2명씩 태울 수 있으므로 모든 사람을 구출하기 위해 필요한 구명보트의 최소개수를 구하는 문제이다. [1차 시도] def solution(people, limit): ans = 0 people.sort(reverse=True) start = len(people)-1 for i in ran..
-
코딩테스트 연습> Summer/Winter Coding(~2018)> 예산ALGORITHM/Programmers 2020. 7. 26. 01:12
코딩테스트 연습 - 예산 S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 �� programmers.co.kr 문제설명: d배열로 주어지는 예산들 중 합산했을 때 budget 범위를 넘지 않는 최대의 예산 개수를 알아내는 문제이다. 최대한 많은 종류의 예산을 선택해야하므로, 오름차순으로 정렬한 후 앞의 숫자부터 차례대로 보면서 budget이 넘지 않을 때까지 count를 해주면 될 것 같다. [1차 시도] import heapq def solution(d, budget): cnt = 0 heapq.heapify(d) while d: if budget - d[0] >=0..
-
코딩테스트 연습> 스택/큐> 쇠막대기ALGORITHM/Programmers 2020. 7. 24. 23:25
문제설명: 여는 괄호와 닫는 괄호로 이루어진 문자열이 주어지고, 여는 괄호 '('가 나올 때마다 막대기가 생성된다. 중간에 괄호과 완성되면, 즉 '()'이 만나게되면 레이저를 발사해 현재까지 생성된 막대기를 두 동강낸다. 이렇게 했을 때 누적된 막대기가 잘려나간 조각들의 총 합을 구하면 된다. [1차 시도] def solution(arrangement): ans = 0 ## 조각 개수 temp = 1 ## 막대기 개수 for a in range(1,len(arrangement)): if arrangement[a] == '(': temp+=1 else: if arrangement[a-1]=='(': temp-=1 ans+=temp else: ## '))' temp-=1 ans+=1 return ans 풀이..
-
코딩테스트 연습> 탐욕법(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. 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