백준
-
백준 10845 어떻게 풀었나, 큐(Queue) 구현백준 2022. 12. 31. 12:49
코드 import sys N = int(sys.stdin.readline()) stack = [] for i in range(N): cmd = sys.stdin.readline().strip() #push X: 정수 X를 큐에 넣는 연산이다. if "push" in cmd: stack.append(cmd[5:]) #pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. elif cmd == "pop": print(stack.pop(0) if stack else -1) #size: 큐에 들어있는 정수의 개수를 출력한다. elif cmd == "size": print(len(stack)) #empty: 큐가 비어있으면 1, 아니면 0을 출..
-
백준 10989번 어떻게 풀었나백준 2022. 12. 31. 00:01
푼 방법 2751번(수 정렬2)과 똑같은 코드를 제출했다. 그런데 pypy3, python3 둘다 제출해도 메모리 초과가 떳다. 이건 내가 알 수 없는 문제다라고 생각하고 바로 구글링 했다. - 검색을 해 보니 sort()를 쓰면 메모리 초과가 된다고 한다. 그래서 계수정렬(counting sort)를 써야 된다. 더 배우고 싶은 부분 계수정렬 코드 import sys N = int(sys.stdin.readline()) counting = [0]*10000 for i in range(N): a = int(sys.stdin.readline()) counting[a-1] += 1 for k in range(10000): if counting[k] != 0: for j in range(counting[k])..
-
백준 2751번 어떻게 풀었나백준 2022. 12. 30. 00:01
풀었던 방법 2750번(수 찾기)문제와 비슷해서 코드를 그대로 옮겨 보았다. 그런데 시간초과가 나왔다. 이건 도데체 뭔지 모르겠어서 검색해 보았더니 python3 대신 pypy3로 제출하면 된다고 했다. 정말로 그랬다. 좋았던점 내가 해결할 수 없는 부분은 빠르게 검색해서 시간을 아꼈다. 더 알고싶은 부분 pypy3와 python3의 차이점 PyPy3에서 실행시, 자주 쓰이는 코드를 캐싱하는 기능이 있기 때문에, 메모리를 조금 더 사용하여 그것들을 저장하고 있어, 실행속도를 개선할 수 있다. https://ralp0217.tistory.com/entry/Python3-와-PyPy3-차이 input()보다 readline()이 더 빠르다고 한다. 왜 그런지 궁금하다. 단순한 N값을 입력받을 때는 input..
-
백준 2750번 어떻게 풀었나백준 2022. 12. 29. 00:01
좋았던점 아날로그로 알고리즘을 생각하니 잘 떠올랐다. 재귀함수와 while문에 조건을 추가하는것의 차이점을 알았다. 재귀함수는 while문보다 오래걸리고, 간단하게 생각하면 된다. while문은 재귀함수보다 적게걸리고, 마지막 부분에 변수를 잘 바꿔 주어야 한다. 에러코드 보는 능력이 좋아진거 같다. 영상에서 봤던 insertion sort를 썻다. 고치면 좋을 부분 아니 그냥 정렬할거면 그냥 .sort()를 사용하면 됐었다. ???? 아니이걸 새롭게 알게 된 사실 파이썬의 .sort()와 sorted()는 Tim sort 알고리즘을 사용한다. 출처 - https://memostack.tistory.com/30 더 알아보고 싶은 것 Tim sort 코드 N = int(input()) A = [0]*N f..
-
백준 1920번 어떻게 풀었나백준 2022. 12. 28. 22:34
좋았던점 입력받기 고드 빠르게 잘 씀 Binary Search를 구현할때, 디버깅 좋았음 고치면 좋을 부분 알고리즘을 생각하는 과정에서 'Binary Search'을 몰랐음 무작정 Liner Search로 단순화 하려고 했는데 풀리지 않았음 고민해도 안풀리는 문제였음 디버깅 하는 방법을 좀더 익히면 좋겠음 아날로그 방식으로 알고리즘을 생각하면 더 잘 떠오를거 같음 코드 # N입력받기 N = int(input()) # 리스트 입력받기 A = list(map(int, input().split())) # M 입력받기 M = int(input()) # 리스트 입력받기 cheaklist = list(map(int, input().split())) A.sort() ret = [0]*M #이진검색 for k in r..
-
백준 2667번 어떻게 풀었나백준 2022. 12. 5. 11:50
좋았던점 메모에 어떻게 풀어나갈지, 쉬운거 부터 써가면서 시작하니까, 어느부분을 고민해야되는지 알 수 있어서 좋았다 어이없이 쉬운 알고리즘이라도 그것도 알고리즘이다 알고리즘을 점차 구체적으로 만들어 나가면 된다 그러다 보니, 재귀함수를 통해서 문제를 풀면 좋겠다는것을 깨달았다. 고치면 좋을 부분 파이썬을 아직 완벽하게 다루지는 못해서 입력과 리스트 손볼때 구글링이 좀 필요했다. 그런 부분은 알고리즘을 겪으면서 경험을 쌓는걸로.. 같은알고리즘을 계속 반복해야된다 -> 재귀함수