본문 바로가기

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

015 수 정렬하기 첫번째 코드 그냥 문제를 보고 단순히 sort 함수를 사용하면 금방 풀겠다라는 생각을 했다. import sys input = sys.stdin.readline n = int(input()) A =[] for i in range(n):     A.append(int(input())) A.sort() for num in A:     print(num) 통과!근데 이는 버블을 사용해서 풀어보는 것이 힌트이므로 버블을 사용해보자두번째 코드 버블은 인접한 두 개의 숫자를 비교하는 방법이다.덱과 같이 import를 통해 단순한 방법이 있으려나..싶어서 책을 참고했는데그런 방법이 아니라 조건문을 통해서 두개씩 비교하도록 만드는 것이다.인접한 두 개의 숫자 비교를 위해서 내가 가장 헷갈렸던 부분은 범위 정하기이다.... 2024. 4. 25.
016 버블 소트 첫 번째 코드 머릿속에는 버블을 사용하자!! (버블버블 머리속이 아주 부글부글...) 그래서 버블을 사용해서 정렬은 다 했는데....응?그 얼마나 루프를 돌렸는지는 어떻게 알징.... 이 부분에서 책을 참고했다!돌린 루프 = 변하기 이전의 인덱스 - 변한 후의 인덱스 + 1이렇게 생각하면 되는데, 이렇게 글로만 써두고 외우면 나중에 뭔 소리지 할 수 있으니까나중에도 빠른 이해를 위해 그림을 남겨두자! import sys input = sys.stdin.readline n = int(input()) A =[] for i in range(n):     A.append((int(input()), i)) for i in range(n-1):     for j in range(n-i-1):         if A.. 2024. 4. 25.
014 절댓값 힙 첫번째 코드 스택이나 큐를 이용해서 풀고싶었는데 코드가 너무 복잡해지고 계속 중간에 오류가 나서.... 책을 참고했더니 우선순위 큐를 이용하면 된다고 한다! 정렬 기준을 적용해서 선언하는 방법이다 import sys input = sys.stdin.readline print = sys.stdout.write from queue import PriorityQueue n = int(input()) queue = PriorityQueue() for i in range(n): request = int(input()) if request == 0: if queue.empty(): print('0\n') else: temp = queue.get() print(str((temp[1])) + '\n') else: qu.. 2024. 4. 22.
013 카드2 첫번째 코드 신경써야 할 부분!! deque를 이용하자!!!! 1. 처음 하나의 원소 제거는 popleft() 2. 다음 원소 제거도 popleft() 3. deque는 리스트의 특성과 비슷하므로 원소를 추가할 때 append 함수를 사용하면 된다! 4. 위 과정을 언제까지 반복한다? 원소 하나가 남을 때까지 import sys input = sys.stdin.readline from collections import deque n = int(input()) deq= deque(range(1, n+1)) while len(deq)>1: deq.popleft() deq.append(deq.popleft()) print(*deq) 통과! 가볍게 풀었다! 뿌우듯:) 링크 https://github.com/or.. 2024. 4. 22.
011 스택 수열 첫번째 코드 일단...문제 이해에서 고생을 했다... 해당 숫자까지 삽입하고 삭제하는 과정이 가능한지, 과정을 +와 -로 표현하는건데 숫자와 수열이랑 관계가 있나로 쓸데없는 고민을 했다... 이럴떄는 밥먹고 리프레쉬해서 산뜻한 마음으로 다시 읽어봐야지..하고 이해해버렸다 ㅎㅎ 근데 문제느 스택을 처음 접해서 고민을 많이 했다... 스택으로 더하고 빼는 것 까지는 이해를 했는데....라고 까지 생각했는데 그냥 단순하게 리스트에서 더하고 뺴는 것이라고 생각하면 된다! 단, 맨 끝에 더해지고 맨 끝에 제외된다 라는 생각을 가지면 된다! 책을 참고해서 코딩을 했는데, 다음에 풀 때는 조건문 조금씩 생각하면 금방 풀 수 있을 것 같다! import sys input = sys.stdin.readline n = i.. 2024. 4. 18.
012 오큰수 첫번째 코드 책에서 말한 큐와 스택을 이용하여 문제를 푸는데 어떻게 작성해야할 지 몰라 책을 참고했다! 처음에 계속 의문이었지만 코드를 작성하고 디버깅으로 돌리면서 이해했다! stack 리스트에는 인덱스가 들어간다고 생각하면 편하다 만약 다음 값이 크면, stack에 값이 있고 A[stack]가 A[i]보다 작을때 계속 해서 반복 answer[stack]에 A[i] 부여 (A[i]값이 더 큰거니까) stack에 i 인덱스 추가 위의 과정을 반복하고 만약 이후에 stack에 원소가 존재하면 그것은 왼쪽에 현재보다 더 큰수가 없었다는 의미이므로 -1를 출력해야한다. 그렇게 결과를 만들어내면 된다! import sys input = sys.stdin.readline n = int(input()) A = lis.. 2024. 4. 18.
728x90