전체 글

·TIL
🔗 피보나치 수 - 프로그래머스 📌오늘의 학습 키워드코딩을 조금 해봤다 하면 꼭 해봤을 피보나치 수 문제, 재귀로 하지 말고 값을 저장해 가자!✨공부한 내용 본인의 언어로 정리하기재귀 말고 메모이제이션 그니까 기록하면서 마지막 결과를 갖다가 쓰면 된다.📚오늘의 회고어떤 문제가 있었고, 나는 어떤 시도를 했는지매우 사소한 것만 이야기해보자면 save 하는 배열에서 계속 값을 추가했었다. 근데 그냥 마지막 두값만 저장해도 문제 푸는 데 문제가 없어서 배열 값이 2개로만 유지되도록 수정해 봤다.[🤓문제 해결 코드]def solution(n): if n == 0 or n == 1: return n save = [0, 1] for i in range(2, n + 1): ..
·TIL
굉장히 시간이 오래 걸렸다 호호~~ 처음에는 1) 재귀를 통해 중복을 포함해 모든 경우의 수를 생성하고,2) 중복되는 경우의 수를 빼준다음3) sort를 한번 해주고 각각 이웃하는 선분을 비교했으나 시간초과가 걸렸다.  sort 해주는 것이 시간복잡도를 증가시키는 것 같아 그것을 제거했으나 여전히 시간초과...그래서 해설을 봤다. 여기에서는 중복을 포함해 모든 경우의 수를 생성하지 않고재귀를 두 가지 조건으로 돌려 문제 조건을 만족시켰다.  def recursion(cnt): global candidate if cnt == n: if len(line_bag) > candidate and not check_connect(line_bag): candidate = l..
·TIL
🔗 큰 수 만들기 - 프로그래머스   📌오늘의 학습 키워드자꾸 그리디랑 완전 탐색을 착각하는 나자신... 그리디는 어려운 점이 어떤 방법이 그리디한지 알기 어려워서가 아닐까 싶다.✨공부한 내용 본인의 언어로 정리하기사실 너무 오래 걸려서 다른 분이 짜신 코드를 참고했다. 스택을 이용해 해결했다.📚오늘의 회고어떤 문제가 있었고, 나는 어떤 시도를 했는지처음에는 재귀로 모든 경우의 수를 탐색 한 다음 큰 수 를 찾으려고 했으나 시간 초과가 떴다.어떻게 해결했는지사실 어떤 것이 큰 수를 만드는 그리디 방식인지 몰라 다른 분들의 코드를 찾아봤고 스택을 통해 해결하는 방법을 찾았다. O(n)의 시간 복잡도를 가지는 방법으로 한 숫자씩 돌아가면서 만약 스택 가장 위에 있는 수가 현재 숫자보다 작으면 다 빼버리..
·TIL
🔗 구명보트 - 프로그래머스   📌오늘의 학습 키워드저번 기수에서 풀었던 문제다. 처음 풀 때 꽤나 힘들었던 걸로 기억한다..✨공부한 내용 본인의 언어로 정리하기그리디 문제로 가장 무거운 사람과 가벼운 사람을 함께 묶어 limit 을 초과하지 않는 다면 보내고 아니면 무거운 사람만 보내면 된다. [🤓문제 해결 코드]from collections import dequedef solution(people, limit): people.sort() people = deque(people) answer = 0 while people: person = people.pop() if people: light = people.popleft() ..
·TIL
🔗 2667. 단지번호 붙이기 - 백준  📌오늘의 학습 키워드BFS인거 같은데✨공부한 내용 본인의 언어로 정리하기dx,dy 에서 배운것도 써봤다. 어제 visited를 사용하지 않았었는데 이번에는 사용해 봤다.📚오늘의 회고어떤 문제가 있었고, 나는 어떤 시도를 했는지오늘은 냅다 코드를 적지 않고 구성을 하고 진행해 봤다. 역시 훨씬 수월했다.어떻게 해결했는지각 집을 순회하면서 만약 집이 있으면 그 집 근처의 이웃들을 모두 찾는 방식으로 해결했다.[🤓문제 해결 코드]import sysfrom collections import dequen = int(sys.stdin.readline())board = []visited = []for _ in range(n): nums = sys.stdin.rea..
·TIL
🔗 2644. 촌수계   📌오늘의 학습 키워드BFS를 통해 해결하는 문제였으나 자료구조에 따른 메모리 차지에 대해서 알게 되었다.✨공부한 내용 본인의 언어로 정리하기결론적으로 dictionary가 list보다 메모리를 많이, 통과가 안될 정도로 많이 차지했다.📚오늘의 회고어떤 문제가 있었고, 나는 어떤 시도를 했는지촌수를 계산하는 문제로 트리를 이용해 BFS로 해결하는 문제였다. 잘 구현했다고 생각했는데 계속 메모리 초과가 났다.어떻게 해결했는지찾아보니까 나는 dictionary를 사용해 node list를 구현했는데 그게 문제였다. list를 사용하니까 바로 통과했다.무엇을 새롭게 알았는지메모리 사용량 : dictionary > list[🤓문제 해결 코드]import sysfrom collect..
·TIL
🔗 모음사전   📌오늘의 학습 키워드완전탐색✨공부한 내용 본인의 언어로 정리하기완전 탐색인데 재귀 공부한거 사용해서 풀어봤다.📚오늘의 회고어떤 문제가 있었고, 나는 어떤 시도를 했는지오늘 문제는 사전을 만든다음에 그 index를 반환하는 문제였다.어떻게 해결했는지나는 모든 경우의 수의 사전을 만든 후에 정렬하고 index를 반환했다.무엇을 새롭게 알았는지🤗내일 학습할 것은 무엇인지재귀 more[🤓문제 해결 코드]count = 0word = []word_list = []def solution(target_word): def make_list(cnt, total): global word global count if cnt == total: ..
·TIL
🔗 745. Prefix and Suffix Search  📌오늘의 학습 키워드오늘 갑자기 난이도가 높아졌다. 시간 초과 문제를 잘 다뤄야 했는데 역시 hash(dictionary)로 해결했다. ✨공부한 내용 본인의 언어로 정리하기각각의 항목을 직접 확인하기 보다는 모든 경우의 수를 dictionary 에 두고 마지막에 확인해야 시간 초과가 일어나지 않았다.📚오늘의 회고어떤 문제가 있었고, 나는 어떤 시도를 했는지단순하게 for문에서 startswith, endswith로 확인하려고 했으나 실패했다.어떻게 해결했는지가능한 prefix, suffix dictionary를 다 만들어 놓고 거기에서 찾았다.무엇을 새롭게 알았는지마지막에 검색하기보다 모든 경우의 수를 만들어 놓고 검색하는게 더 빠를 수 있..
yolang
프로그래밍 기록장