본문 바로가기

코딩 테스트/do it! 알고리즘 코딩테스트100

034 수 묶기 첫번째 코드 역시! 그리디 알고리즘을 이용하자 그리고 033번 문제를 풀고 난 후 문제를 접한 것이여서 비슷한 느낌으로 풀면 되겠구나! 라는 생각이 금방 들었다. 가장 큰 숫자끼리 곱하는 것이 큰 수가 나오므로 priority queue를 이용해야 한다. 양수인 경우, 음수인 경우 나누어 진행한다. (priority queue는 오름차순으로 정리되기 때문에 양수에 -1을 곱하여 가장 큰 수가 가장 앞에 오도록 해야한다!!!) 음수가 남으면 0을 더하게 되면 좋으므로 일단 빼두고 나중에 음수가 남는 경우에 더한다. 1은 곱하는 것에 의미가 없기 때문에 무조건 더한다! import sys input = sys.stdin.readline from queue import PriorityQueue n = int(.. 2024. 5. 28.
033 카드 정렬하기 첫번째 코드 그리디 알고리즘을 이용하여 풀자!! 그리디 알고리즘을 queue를 이용해서 푸는 경우가 대부분이다! 그러므로 이 문제는 queue를 이용하자! 사실 처음에는 큐를 만들고 고민을 했다... 생각해보니까 이전에 PriorityQueue를 쓰면 알아서 정렬 된다는 것을 배웠었잖아!! 근뎅....queue와 PriorityQueue의 사용되는 함수들이 다르다는 것을 알았다.... 그래서 책을 참고해서 작성했다! import sys input = sys.stdin.readline from queue import PriorityQueue n = int(input()) queue = PriorityQueue() for i in range(n): queue.put(int(input())) a = 0 b =.. 2024. 5. 28.
031 K번째 수 (미해결) 첫번째 코드 아이디어는 뭔가 느낌이 오는 듯 했으나 결과적으로 모르겠다!! 책의 코드를 참고하여 작성하고 답은 맞았지만 이해를 위해 추후에 설명과 코드를 다시 작성해보도록 하자 혹시 미해결이 없어지기 전에 뚝딱 푸신 대단해 엄청나 분들이 있다면....설명을 부탁드려ㄷ...될까요?ㅎㅎ; import sys input = sys.stdin.readline n = int(input()) k = int(input()) start = 1 end = k answer = 0 while start 2024. 5. 23.
032 동전 0 첫번째 코드 그리디 알고리즘에 대해서 배우고 처음 푼 문제이다! 그리디 알고리즘 자체는 어렵지 않고 코드를 짤때도 어려움이 없었다. 아이디어는 책을 참고했으나 책의 아이디어를 바탕으로 코드를 작성했는데 거의 똑같은 것을 보아 아주 잘 이해했구만! 근데 앞으로 아이디어를 만들어 내는 것이 관건일 것 같다..ㄷㄷ 먼저 sorting 되어 있는 동전 기준으로 가질 수 있는 가장 큰 동전을 가져와서 k에서 나눈 값의 몫만큼 count에 더해준다. 그리고 나머지를 k로 갱신하고 위와 같은 방법으로 계속 진행한다. n, k = map(int, input().split()) A = [] count = 0 for _ in range(n): A.append(int(input())) for i in range(n-1, -.. 2024. 5. 23.
030 기타 레슨 첫번째 코드 이 문제의 경우는 정렬해서 중앙값을 찾아 다시 찾는 이진 탐색은 맞으나 총 합을 기준으로 생각하는 것이다! 예를 들어 블루레이가 3개 필요하다 할 때, 총 합의 중앙값으로 계산한 결과 블루레이가 4개이면, 중앙값 기준 시작 점을 오른쪽으로 옮기고 충 합의 중앙값으로 계산한 결과 블루레이가 2개이면, 중앙값 기준 끝 점을 왼쪽으로 옮기는 것이다. 읽고나면 그렇게 계산할 수 있구나~ 라고 생각이 들지만 사실 직접 풀 때 이런 아이디어를 낼 수 있을까? 가 걱정이다... 그리고 코드를 짤때도 어려움이 있어 책을 참고했다... import sys input = sys.stdin.readline n, m = map(int, input().split()) A = list(map(int, input()... 2024. 5. 21.
029 수 찾기 첫번째 코드 이진탐색을 이용하자!!! 정렬에서 어떤 함수를 사용하는게 좋을지... 그리고 이진탐색의 전체적인 구성을 어떻게 하는 것이 좋을지에 대해서 책을 보면서 작성했다. 꽤 해보면 금방 따라할 수 있을 듯한 느낌의 주제! import sys input = sys.stdin.readline n = int(input()) n_number = list(map(int, input().split())) n_number.sort() m = int(input()) m_number = list(map(int, input().split())) for target in m_number: find = False start = 0 end = n-1 while start target: end = median -1 elif .. 2024. 5. 21.
728x90