본문 바로가기

전체 글27

[백준 1654번] 랜선 자르기 📖문제: 📙풀이:처음 알고리즘을 짤 때는 가능한 큰 수(가지고 있는 모든 랜선의 합 / 필요한 랜선 개수)에서 -1씩 빼가며 찾는 방법으로 코드를 짰다.하지만 바로 시간초과..그래서 이진 탐색으로 절반씩 범위를 줄여가면서 가능한 가장 큰 랜선 토막의 길이를 찾는 방법으로 코드를 짰다. 시간복잡도: O(log(N)) ✏️코드:'''https://www.acmicpc.net/problem/1654문제: 랜선 자르기난이도: 실버2'''# 이진 탐색으로 풀어야 됨!import sysline_num, need = map(int, input().split())lines = []for _ in range(line_num): lines.append(int(sys.stdin.readline()))possible.. 2024. 9. 29.
[백준 2108번] 통계학 📖문제: 📙풀이:입력받는 숫자들을 리스트가 아닌 딕셔너리 형태로 저장하여 빈도 수를 함께 저장했다.딕셔너리를 정렬하는 방법이 기억이 안나서 구글링을 했다... ✏️코드:'''https://www.acmicpc.net/problem/2108문제: 통계학난이도: 실버3'''import sysdef myround(num): a = int(num) b = num - a if b >= 0.5: return a + 1 elif b  🔗링크:https://www.acmicpc.net/problem/2108 2024. 9. 28.
[백준 1874번] 스택 순열 📖문제: 📙풀이:스택의 특징인 마지막으로 입력된 숫자가 pop()에서 출력된다는 개념을 놓치고 있어서 시간이 오래 걸렸다.이 특징만 활용하면 상당히 쉬워지는 문제다.  ✏️코드:'''https://www.acmicpc.net/problem/1874문제: 스택 순열난이도: 실버2'''import sysdef 백준1874(): n = int(input()) # 입력 받을 숫자의 개수 sequence = [int(sys.stdin.readline()) for _ in range(n)] # 입력 수열 stack = [] # 스택 answer = [] # 출력할 결과 리스트 current = 1 # 스택에 넣을 숫자 possible = True # 수열을 만들.. 2024. 9. 27.
[DB] Chapter 0: Why Databases? ※ 이 카테고리의 글들은 knu CH.Lee 교수님의 수업을 필자가 듣고 나름대로 정리한 글입니다.※ 부족한 설명이 있거나 잘못 알고 작성한 부분이 보인다면 편하게 댓글로 알려주시면 정말 감사하겠습니다😊※ 과목명은 지만 글에서는 익숙한 데이터베이스로 지칭하겠습니다. 서론)데이터베이스는 현대 IT 시스템에서 매우 중요한 역할을 합니다.대부분의 성공적인 웹사이트나 애플리케이션 뒤에는 강력한 데이터베이스가 있습니다.예를 들어,UPS/FedEx: 물류 추적 시스템Amazon/eBay: 상품 관리 및 판매 시스템Google: 검색 엔진이런 시스템들은 모두 대량의 데이터를 효과적으로 관리하기 위해 데이터베이스를 사용합니다. 한 번, 영화 대여 서비스를 운영한다고 가정해봅시다.고객들이 찾아와 영화를 빌려가는데, .. 2024. 9. 26.
[백준 1966번] 프린터 큐 📖문제: 📙풀이:pop() 함수를 사용하게 되면 시간복잡도가 엄청 높아질 것 같아,변수에 현재 위치를 저장하고 원형큐처럼 가리키는 위치를 움직이면서 풀었다. 또한 pop()을 하는 대신 리스트의 값을 0으로 바꾸어 주면서 pop()과 같은 기능을 구현했다. ✏️코드:'''https://www.acmicpc.net/problem/1966문제: 프린터 큐난이도: 실버3'''def myQueue(n, m, box): cur = 0 # 현재 위치를 가리키는 변수 answer = 0 # pop된 횟수, 즉 m이 pop되었을 때 값이 정답! while True: high_in_box = max(box) if box[cur] >= high_in_box and box[cur.. 2024. 9. 26.
[백준 1912번] 연속합 📖문제: 📙풀이:이전에 연속합 문제를 풀었을 때는 분할 정복 방식으로 최대 부분 합을 작게 쪼개어 풀었으나,이번에 dp 방식으로 현재 가장 큰 값을 기억(저장?)하는 방식으로 풀어보았다.그러나, 이 방식으로는 어느 범위에서 연속 합이 가장 큰지는 알 수가 없어, 이러한 문제가 나온다면 다른 방법을 사용해야 할 것 같다. ✏️코드:'''https://www.acmicpc.net/problem/1912문제: 연속합난이도: silver2'''index = int(input())box = list(map(int, input().split()))# 다이나믹 프로그래밍curs, maxs = 0, -1000for i in range(index): curs = max(curs, 0) + box[i] ma.. 2024. 9. 25.