알고리즘63 1966 프린터 큐, Programmers 프로세스 💡문제 분석 요약Queue에서 조금 바꿔서 우선순위를 보고 pop 여부를 결정한다.우선순위가 낮은데 앞에 있다면 맨 뒤로 돌아가게 되고, 자신이 제일 높은 우선순위라면 pop된다.💡알고리즘 설계딕셔너리, 우선순위큐 등을 살펴보았다.딕셔너리로 우선순위와 index를 매칭시켜볼까도 생각했는데, index 업데이트 하는 게 매우 번거로울 것 같아서 그만두었다.그리고 우선순위큐를 보았는데 아직은 잘 다루지 못하겠어서 제쳐두었다. 이는 나중에 다시 포스팅해야겠다.💡코드from collections import dequefor _ in range(int(input())): n, m = map(int, input().split()) files = deque(list(map(int, input().sp.. 2024. 7. 12. 9012 괄호 💡문제 분석 요약괄호 문자열의 짝이 맞는지 분석한다. () 이것은 맞고 ()), )( 이런 것은 틀리다.문자열의 길이는 2~50이다.💡알고리즘 설계스택에 넣고 하나씩 빼면서 짝을 맞춰보기또는, ( ) 개수를 보고 짝이 안맞으면 NO 출력💡코드from collections import dequen = int(input())for _ in range(n): dq = deque(input()) compare = 0 if dq.count("(") != dq.count(")"): # 괄호의 개수 자체가 다르면 비교 X print("NO") continue """ (은 )보다 항상 많거나 같아야 한다는 것을 이용 개수를 체크하면서 compare 값을 .. 2024. 7. 11. deque 문제를 풀다가 deque라는 것을 봤는데 스택과 큐의 기능을 한번에 한다고 하니 매우 유용할 것 같다 ! 한번 알아보자 .. deque데크 디큐 덱 뎈.... 그냥 덱 이라고 부르겠다. 덱은 출입구가 양쪽에 있어서 스택과 큐의 기능을 동시에 가진다. 덱은 다음과 같이 선언하거나, 변환한다. 코드를 보면 알 수 있듯, 기존에 선언된 리스트를 덱으로 변환하는 것도 가능하다. from collections import dequetruck = [7, 4, 5, 6]truck = deque(truck) # 덱으로 변환onthebridge = deque([0] * bridge_length) # 덱으로 초기화장점덱은 리스트보다 속도가 빠르다. pop(0)을 할 때 리스트는 O(N)인데, 덱은 앞뒤 모두 접근하기에 O.. 2024. 7. 10. Programmers 다리를 지나는 트럭 💡문제 분석 요약트럭이 다리를 건너는데, 이때 (1)다리의 길이만큼만 트럭이 올라갈 수 있고, (2)weight 이하로만 트럭이 올라가야한다.모든 트럭이 건너는 최소시간을 구한다.💡알고리즘 설계Queue를 사용해야겠다고 생각했다.문제를 풀며 찾아보니 deque를 사용하는 것이 더 범용적인 것 같아 deque를 이용하였다.💡코드from collections import dequedef solution(bridge_length, weight, truck_weights): truck_weights = deque(truck_weights) # truck_weights를 deque으로 변환 onthebridge = deque([0] * bridge_length) # 다리 길이만큼 초기화하기 .. 2024. 7. 10. 백준 1158 💡문제 분석 요약N명의 사람이 있고, K번째 사람을 제거한다. 제거되면 그 다음 K번째 사람을 다시 제거한다.제거된 사람은 list에서 빠지게 된다.최종 1명이 남을 때 까지 제거한다.💡알고리즘 설계원형큐를 사용해야될 것 처럼 보였는데, 일단은 list를 사용한 큐로 풀었다.나머지 계산이 들어갈 것으로 보이고, len(list)를 나누는 것을 pop하고 나서 할지, 이전에 할지 생각해보면 될 것 같다.💡코드n, k = map(int, input().split())lst = [x+1 for x in range(n)]removed_people = [] # 제거된 사람 모임remv = 0 # 제거될 사람for i in range(1, n+1): remv += (k-1) if remv >= le.. 2024. 7. 9. 코테 삽질일지 (1) 코테공부 삽질일지 5개 채워지면 블로그 작성 !! (제목과, 실패 키워드) 오후 2:05 2024-05-14(화) >> 체육복 개수 구할 때 for문 다 끝나고 return 해야하는데 for문 안에서 마지막줄에 return 해서 길이 1인거 빼고 다 실패함 오후 3:45 2024-05-15(수) >> 숫자 문자열과 영단어 문자열에서 replace 쓸 때 str.replace(old, new) 라고만 씀. 이건 str = str.replace(old, new) 라고 써줘야 업데이트가 됨 오후 11:42 2024-05-15(수) >> 가장 가까운 같은 글자 lst.index() 이건 처음 만나는 놈의 인덱스 반환임... 뒤에 인덱스는 고려 X banana에서 a의 인덱스를 매번 업데이트 하려고 최신a = .. 2024. 7. 9. Stack, Queue 요약 Stack 스택스택은 Last In First Out 구조를 가진 자료구조이다.파이썬에선 별도로 구현할 필요 없이 리스트를 사용하면 된다.push : appendpop : pop()stack = [] # 스택 선언stack.append(1) # pushstack.pop() # popQueue 큐큐는 스택과는 달리 First In First Out 구조를 가진다.파이썬에선 Queue를 2가지 방법으로 사용한다.1. list를 활용할 수 있다. 스택과 마찬가지로 추가는 append로, 다만 삭제는 del이나 pop()을 사용할 수 있다. 2. Queue 라이브러리를 사용할 수 있다. 이땐 추가와 삭제가 조금 다르다.Queue 라이브러리 추가 : put()Queue 라이브러리 삭제 : get() → 이때 삭제.. 2024. 7. 8. 백준 10828 💡문제 분석 요약(시간/공간복잡도 제약도 추가하기)5개의 명령에 대하여 각 명령에 대해 다른 작업이 수행된다.명령은 5개 이외에는 주어지지 않는다.입력 개수는 10만개까지 가능하다.💡알고리즘 설계입력값을 담는 stack은 파이썬의 list를 사용하였다.5개의 명령에 대해 switch처럼 처리하는데, 파이썬은 switch가 없으므로 if-elif 형식으로 작성해본다.stack이 비어있는 경우처럼 특별한 케이스가 있는 명령어에 대해선 if-else를 안쪽에 하나 더 추가해준다.💡코드"""1. 처음에는 시간초과 났는데, sys.stdin.readline 으로 입력받으니까 바로 해결2. 한줄에 몇개를 입력받는지 모르는 상황에선 a, b = input().split()처럼 하지 말고 a = input().s.. 2024. 7. 8. 대충 만든 자판 def solution(keymap, targets): d = dict() result = [] for i in keymap: for target in i: if target in d: # 값이 이미 있을 때 d[target] = min(i.index(target) + 1, d[target]) else: # 값을 처음 넣는 경우 d[target] = i.index(target) + 1 for i in targets: sum = 0 for target in i: if target not in d: sum =.. 2024. 5. 19. 이전 1 2 3 4 5 6 7 다음 반응형