본문 바로가기

분류 전체보기88

[📚누구나 자료구조와 알고리즘] 12-1. 동적 프로그래밍 - 불필요한 재귀 호출 줄이기 재귀는 때로 O(2^N)과 같이 느린 빅오의 원인이 된다. 배열의 최댓값을 구하는 예제 코드로 재귀가 때로 얼마나 많은 비효율적인 호출을 만들어보는지 확인해볼 수 있겠다. def get_max_value(arr): if len(arr) ==1 : # 만약에 인수로 들어온 배열 원소의 갯수가 1개라면 return arr[0] # 최댓값은 해당 원소일 것이다 if arr[0] > get_max_value(arr[1:]) : # 만약 배열의 첫 원소가 나머지 모든 원소들의 최댓값보다 크다면 return arr[0] # 최댓값은 배열의 첫 원소일 것이다. else: # 만약 배열의 첫 원소가 나머지 원소들의 최댓값 보다 작다면 return get_max_value(arr[1:]) # 나머지 원소들 중의 최댓값이.. 2022. 10. 14.
Week02-03. 정말 최선을 다하고 있나. Week02 회고를 쓰지 못했다. Week02를 시작하고 Week03이 끝난 오늘까지도 회고 쓸 시간이 없었다. 정확히는 시간이 없었던 게 아니라 회고를 쓸 마음의 여유가 없었다. 2-3주차 모두 나보다 실력이 뛰어난 팀원들과 함께 팀을 이뤘는데, 팀원들과 속도를 맞춰야 한다는 부담감이 있었다. 정글의 알고리즘 주차에서는 중간 중간 팀원들과 코드 리뷰를 하는데 상대적으로 문제를 푸는 속도 느린 나는 코드 리뷰 속도를 맞추기 위해 매일 매일이 조급했다. 2주차에는 27문제, 3주차에는 23문제를 풀었어야 했는데 2-3주차 모두 4문제를 풀지 못했다. 이 블로그를 보시는 분들이 오해하실까봐 덧붙이자면, 정글에서 제공하는 문제를 오롯이 자기의 힘으로만 풀어야 하는 것은 아니다. 인터넷에서 답을 찾아봐도 되고,.. 2022. 10. 14.
Week01. 알고리즘 파티 + 최적의 공부 방법을 찾아서 Week01 금요일에 처음 백준 문제를 풀기 시작했는데 수요일에 6일만에 백준 실버가 되었다. (그 3일 뒤에 실버4로 또 레벨업ㅎ) 여러분 정글이 이렇게 무서운 곳입니다… 알고리즘을 많이 접해본 사람이라면 더 빠르게 레벨업할 수도 있겠지만, 나의 경우 알고리즘 경험이 거의 없어 하루에 13시간씩 풀었어야했다. 우리 조 모두 비슷한 실력이어서 첫 날에 input() 받는 것 조차 구글링을 하는 단계였는데, 하루하루 하면서 다들 조금씩 실력이 늘어가는 게 눈에 보였다. 알고리즘 커리큘럼을 좀 설명하자면 정글 Week01 부터는 4주동안 자료구조/알고리즘 주차이다. 이 주차들을 거치며 '어떻게 컴퓨터에게 일을 시킬 것인가'를 익히게 된다. WEEK01: 배열, 문자열, 반복문과 재귀함수, 계산복잡도, 정렬,.. 2022. 10. 3.
Week00. 쉴 틈이 없다. 사실 Week00 회고는 지난 주에 작성할 계획이었는데, 정글이 이렇게까지 바쁠지 몰랐다 ㅎ 그래도 간단히 00주차를 돌아보고자 한다. 정글에서는 목요일 ~ 수요일을 한 주로 친다. (정확히는 목요일 오후 ~ 그 다음주 목요일 오전 이 한 주) 월요일에 입소한 우리는 수요일까지 3일간 0주차를 보내게 되고, 정글에서의 4일째가 되는 목요일에 비로소 1주차를 시작한다. 1주차 시작 전 보내는 이 3일간, 사람들과 친해지기도 하고 주변 구경도 하고 그럴 것만 같지만, 우리 반 모두가 아마 0주차 때 가장 잠을 못 잤을 것이다. 다른 동기 한 명은 0주차 때 3일동안 총 10시간만 잤다고 한다. ㅎ 정글에서의 생활이 궁금해서 나의 블로그를 찾아오시는 분들도 많으니 가능한 한 자세히 기록해보겠다. 1일차 (월).. 2022. 10. 1.
[정글 TIL] 유클리드 호제법 , 재귀 알고리즘 오늘은 랜덤런치 날이라 다른 조원들과 함께 점심 식사를 했는데, 대부분 재귀함수에서 벗어나지 못하고 있었다. 나도 마찬가지라 (^.^) 재귀함수 문제 풀다가 도저히 공부없이는 해결을 못 할 것 같아서 교재를 펴서 재귀 알고리즘을 공부하기 시작했다. 재귀 알고리즘의 예제로 '유클리드 호제법'이 나왔는데 알고리즘은 고사하고 그냥 유클리드 호제법 자체가 이해가 안 가서 유클리드 호제법부터 공부했다. 어차피 이번주차 공부해야 할 내용중에 정수론도 있어서 겸사겸사 함께 공부! 유클리드 호제법은 youtube에서 쑤튜브 채널 영상을 참고해서 이해했다. 유클리드 호제법 유클리드 호제법은 A와 B의 최대공약수는 B와 A를 B로 나눈 나머지의 최대공약수와 같다는 것이다. 즉, A = qB + r 이라면 (q는 몫, r은.. 2022. 9. 26.
[정글 TIL] Week01 | 입출력, 산술연산자(/,//,%) 나의 TIL은 Today I Learned가 아닌 This week I Learned :-) 지난 기수 분들의 TIL을 보면, 대부분 10주차 정도까지만 TIL을 쓰시고 대부분 자취를 감추시더라. 하지만 정글에서 7일째를 보내고 있는 난 이제 알 것 같다. 그 분들이 초심을 잃거나 귀찮으셨던게 아니라 더이상 TIL을 쓸 시간조차 없으셨다는 것을..ㅎㅎ 나도 주차가 진행될 수록 바빠지겠지만 최대한 매주 배웠던 내용들을 정리하고 매 주마다의 깨달음과 마음가짐 등을 마지막 주차까지 꼭 적어보도록 노력해봐야지! 어쨌든 fresh한 마음으로 첫 TIL을 시작해본다! 이번 주부터 4주 간은 자료구조와 알고리즘에 대해 공부하고, python 언어로 백준 알고리즘 문제를 푼다. 나는 주로 javascript로 개발을 .. 2022. 9. 26.
반응형