본문 바로가기

백준10

[python]1654_랜선 자르기 사용한 자료구조 및 개념 : 이분 탐색 (Binary Search) 💡 문제풀이 아이디어 및 어려웠던 점💫 아이디어가능한 최대 길이를 효율적으로 찾기 위해 이분 탐색(Binary Search) 을 사용하였습니다. 🤓 문제 풀이 단계1️⃣ 입력 받기 및 초기 설정랜선의 개수 k와 필요한 랜선의 수 n을 입력받습니다.이어서 각 랜선의 길이를 입력 받아 cables 리스트에 저장합니다.이분 탐색을 위한 시작점 start를 1로, 종료점 end를 주어진 랜선들 중 최대 길이로 초기화합니다.2️⃣ 이분 탐색을 통한 최대 길이 탐색while start 중간 길이 mid를 계산하고 이 길이로 자를 수 있는 랜선의 개수 cnt를 구합니다.만약 cnt가 목표치 n 이상이면 해당 길이 mid는 조건을 만족하므로 정답.. 2025. 1. 14.
[python]2776_암기왕 사용한 자료구조 및 개념 : set 💡 문제풀이 아이디어 및 어려웠던 점💫 아이디어이 문제에서는 두 개의 수열이 주어졌을 때, 두 번째 수열의 각 수가 첫 번째 수열에 존재하는지 여부를 빠르게 확인해야 합니다. 기본적으로 브루트 포스로 모든 요소를 비교할 수도 있겠지만, 그렇게 하면 시간복잡도가 높아져서 효율적이지 못합니다.효율적으로 해결하기 위해 set 자료구조를 활용했습니다. 파이썬의 set은 내부적으로 해시 테이블을 사용하여, 멤버십 테스트(어떤 요소가 집합에 있는지 확인)를 평균 O(1)의 시간복잡도로 수행합니다. 이를 통해 각 숫자가 첫 번째 수열에 존재하는지를 빠르게 확인할 수 있습니다.🤓 문제 풀이 단계1️⃣ 입력 받기 및 자료구조 초기화먼저 테스트 케이스(tc)의 수를 입력받습니다.각.. 2025. 1. 13.
[python]4385_생태학 1 사용한 자료구조 및 개념 : 딕셔너리, Counter 💡 문제풀이 아이디어 및 어려웠던 점 💫 아이디어 1️⃣ 딕셔너리를 사용하여 나무이름: 나무 갯수 로 키 - 값을 설정한다. 2️⃣ 딕셔너리에 나무가 있다면 value값을 +1해주고 없다면 딕셔너리에 나무이름-값을 추가한다. 3️⃣ 알파벳 순서로 딕셔너리를 정렬한다. 4️⃣ 정렬한 딕셔너리를 반복문으로 돌려 키 값을 가져와 나무 이름과 해당 나무가 전체 나무에서 차지하는 비율을 출력한다. ❣️ Counter 사용 1️⃣ 모든 텍스트를 읽고, 줄 바꿈을 기준으로 각 나무 이름을 Counter 을 사용하여 카운트 한다. 2️⃣ split(’n’)을 하면 마지막에 빈 문자열(””)이 생길 수 있으므로 빈 문자열을 딕셔너리에서 삭제한다. 3️⃣ 알파벳 순.. 2023. 8. 9.
[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.
[python]1966_프린터 큐 1 걸린 시간 : 45m 2 사용한 자료구조 및 개념 : deque 💡 문제풀이 아이디어 및 어려웠던 점 💫 아이디어 1️⃣ enumerate와deque를 사용하여 기존 순서와 값을 가진 튜플 리스트를 만든다 2️⃣ 최댓값과 현재 프린트될 순서의 값을 popleft()하여 비교 3️⃣ 같으면 출력 횟수 +1을 해주고 출력 후 break 4️⃣ 다르다면 append하여 리스트의 끝으로 낸다 👻 어려웠던 점 🚨 최적화된 방법인가? 중요도가 높은 문서를 찾기 위해 매번 max로 전체 리스트를 스캔하는것이 비효율적이라고 생각되어 다른 방법을 찾아보았다. ⇒ heapq 모듈을 사용하여 우선 순위 큐 구현! (아래에 또 구현코드 있음) Solution Code & 주석 import sys from collectio.. 2023. 7. 4.
[python]10866_덱2 1 걸린 시간 : 10m 2 사용한 자료구조 및 개념 : deque 💡 문제풀이 아이디어 및 어려웠던 점 💫 아이디어 1️⃣ deque를 사용한다 2️⃣ push_front는 appendleft를 사용한다 👻 어려웠던 점 없음!!👍 Solution Code & 주석 import sys from collections import deque tc = int(input()) q = deque([]) for t in range(tc): command = sys.stdin.readline().split() if command[0] == 'push_front': q.appendleft(command[1]) elif command[0] == "push_back": q.append(command[1]) elif com.. 2023. 7. 3.