본문 바로가기

💡Algorithm/python31

[python]22942_데이터 체커 1 걸린 시간 : 1h 2 사용한 자료구조 및 개념 : deque, sort 💡 문제풀이 아이디어 및 어려웠던 점 💫 아이디어 1️⃣ 각 원의 중심 좌표와 반지름을 활용하여 시작점과 끝점을 구한다. 2️⃣ 하나의 원이므로 튜플 형태( 시작점, 끝 점 )로 리스트에 담는다. 3️⃣ sort를 활용하여 시작점을 기준으로 정렬한다. → 가장 왼쪽에 위치한 원부터 차례로 검사할 수 있어 확인 과정이 수월해진다. 4️⃣ stack 최상단 원의 끝점이 현재 원의 시작점(start)보다 작다면, 이는 겹치지 않음을 뜻하므로 스택의 원 끝점을 pop한다. 예를 들어 스택에 [9, 4]가 있고 현재 비교하는 원이 (5, 7) 이라면 스택의 최상단 원의 끝점 4는 현재 비교하는 원의 시작점 5보다 작으므로 겹치지 않음을 .. 2023. 7. 14.
[python]2493_탑 1 걸린 시간 : 1h 2 사용한 자료구조 및 개념 : 반복문, stack 💡 문제풀이 아이디어 및 어려웠던 점 💫 아이디어 1️⃣ 스택에 높은 탑의 인덱스와 값을 담아둔다. 2️⃣ 스택의 최상단 탑이 현재 탑(레이저를 쏘는)보다 낮다면 수신할 수 없다는 뜻이다. 따라서 스택에서 제거한다. 3️⃣ 2번 과정을 반복하면서 수신 탑을 찾는다. 4️⃣ 반복문이 끝났을 때 만약 스택이 비어있다면 반복문을 돌면서 수신할 탑을 찾지 못한 것이므로 정답 배열에 0을 추가한다. 5️⃣ 스택이 남아있다면 스택 최상단 탑이 레이저를 수신하는 탑이라는 뜻이다. 따라서 스택 최상단 탑의 인덱스 값을 정답 배열에 추가! 6️⃣ 현재 탑(레이저 발사했던)의 정보를 스택에 추가한다. 다음 탑보다 낮다면 2번 과정에서 빠질 것이고 .. 2023. 7. 13.
[python]2800_괄호 제거 1 걸린 시간 : 1h 2 사용한 자료구조 및 개념 : combinations, stack, set 💡 문제풀이 아이디어 및 어려웠던 점 💫 아이디어 1️⃣ 괄호 짝들의 인덱스를 찾는다 2️⃣ 짝 인덱스들을 모아 놓은 리스트와 combination을 사용하여 경우의 수를 구한다. 이상 자세한 설명은 주석 참고해주세요! Solution Code & 주석 import sys from itertools import combinations string = sys.stdin.readline().rstrip() idx_stack = [] # 한 쌍의 괄호 인덱스들을 담을 스택 [['('의 인덱스, ')'의 인덱스], []] brackets_stack = [] # 괄호의 짝을 찾기 위한 스택, '('의 인덱스만 들어.. 2023. 7. 12.
[python]2504_괄호의 값 1 걸린 시간 : 40m 2 사용한 자료구조 및 개념 : stack 💡문제풀이 아이디어 및 어려웠던 점 💫 아이디어 1️⃣ temp로 괄호의 깊이를 계산한다. 2️⃣ 닫힌 괄호가 나오면 현재까지 계산한 temp값을 answer에 더해주고 짝을 이루는 여는 괄호를 스택에서 제거한다 3️⃣ 닫는 괄호가 나오면서 깊이가 줄었으니 해당 괄호 값 만큼 temp를 나눠준다. (()[[]]) 의 경우 ( temp에 해당 괄호의 값인 2를 곱해준다. ( 여는 괄호가 나온다는 것은 깊이가 깊어졌다는 뜻이다. (깊이가 깊어졌다 → 괄호가 중첩되었다!) 따라서 temp에 2를 또 곱해준다. ) 닫는 괄호가 나왔다. 닫는 괄호는 깊이가 하나 줄었다는것! 중복 괄호가 하나 사라진다는 뜻이다. 그래서 현재 temp값을 answe.. 2023. 7. 11.
[python]10799_쇠막대기 1 걸린 시간 : 40m 2 사용한 자료구조 및 개념 : strip, replace 💡 문제풀이 아이디어 및 어려웠던 점 💫 아이디어 1️⃣ 양끝 레이저를 삭제한다. 2️⃣ 여는 괄호 ( 이 나오면 stack(잘린 막대기 갯수) 에 +1 해준다. 3️⃣ 닫는 괄호 )가 나오고 이전 괄호가 여는 괄호 ( 이라면 레이저이므로 stack에서 -1해주고 stack을 answer에 더해준다. 4️⃣ 그냥 닫는 괄호 ( 가 나오면 막대기의 끝이므로 answer +1 해주고 막대기 하나가 끝났으니 stack 에서도 -1 해준다. 👻 어려웠던 점 🤔 닫는 괄호가 나왔을 때 이전 괄호랑 굳이 비교하는 과정이 썩 마음에 들지 않았다. 그래서 replace 메서드를 활용하여 () 한 쌍의 괄호 자체를 다른 문자 ' | ' .. 2023. 7. 10.
[python]1874_스택 수열 1 걸린 시간 : 40m 2 사용한 자료구조 및 개념 : 스택 💡 문제풀이 아이디어 및 어려웠던 점 💫 아이디어 1️⃣ 스택을 위한 빈 리스트를 만든다 2️⃣ 수열을 만들 수 있는지 없는지를 판단하기 위한 깃발 변수를 만든다! 3️⃣ 초기값이 1인 변수를 만들어 현재 수열의 값이랑 같을 때까지 스택에 푸쉬한다 4️⃣ 스택의 마지막 값과 현재 수열의 값이 같으면 pop하고 아니라면 수열을 만들 수 없으므로 NO를 출력한다 👻 어려웠던 점 🙅‍♀️ Solution Code & 주석 n = int(input()) stack = [] answer = [] cnt = 1 flag = 0 for _ in range(n): num = int(input()) while cnt 2023. 7. 6.