전체 글200 99클럽 코테 스터디 4일차 TIL + 백준 2343 기타 레슨 (파이썬) ※ 2343 기타 레슨https://www.acmicpc.net/problem/2343 문제 해결 TIP개인적으로 이분 탐색 알고리즘을 어떻게 적용할지 생각해내기 어려웠던 문제..(문제 이해도 한번에 안되었다.)그래서 풀이과정을 자세히 써보려 한다. 1. 이분탐색의 처음(start)과 끝(end) 구하기우선 이 문제의 요점은 '블루레이(디스크)의 크기'를 구하는 문제이다. 그렇다면 크기에 초점을 두어 이분 탐색을 적용해보자.우선 예제에서 강의의 길이가 제일 긴 것은 9분짜리 영상이다. 그렇다면 블루레이(디스크) 용량이 최소한 9분 이상은 저장할 수 있어야 모든 강의를 정상적으로 저장할 수 있을 것이다.그렇다면 최대는 어떻게 될까? 바로 모든 강의를 하나의 블루레이(디스크)에 저장했을 때이다. 1부터 9까.. 2025. 1. 16. [Algorithm] 이분탐색(Binary search algorithm, 이진 검색 알고리즘) 이분탐색이란? 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법이다. 찾으려는 데이터와 중간점 위치에 있는 데이터를 반복적으로 비교해서 원하는 데이터를 찾는 것이다. 재귀와 반복문으로 구현할 수 있다. 재귀 함수로 구현한 이분 탐색def binary_search(array,target,start,end): if start > end: return None mid = (start + end)//2 if array[mid] == target: return mid elif array[mid] > target: return binary_search(array,target,start,mid-1) else: r.. 2025. 1. 16. 99클럽 코테 스터디 3일차 TIL + 백준 11663 선분 위의 점 (파이썬) ※ 11663 선분 위의 점https://www.acmicpc.net/problem/11663문제 해결 TIP이분 탐색 변형 문제이다. 처음에 for문으로 돌렸을 때는 역시 시간 초과..아래 입력 함수도 유용하게 써야겠다.import sysN, M = map(int,sys.stdin.readline().split())dot = list(map(int,sys.stdin.readline().split())) 전체 코드import sysN, M = map(int,sys.stdin.readline().split())dot = list(map(int,sys.stdin.readline().split()))dot.sort()def dot_min(start_dot): start = 0 end = N - 1 .. 2025. 1. 15. 99클럽 코테 스터디 2일차 TIL + 백준 1654 랜선 자르기 (파이썬) ※ 1654 랜선 자르기https://www.acmicpc.net/problem/1654문제 해결 TIP처음에 반복문으로 max(랜선길이)까지 탐색하다가 시간 초과 이슈 발생..이분 탐색으로 바꿨더니 성공했다. 전체 코드K, N = map(int,input().split())length = []for i in range(K): length.append(int(input()))start = 1end = max(length)while start = N: start = mid + 1 else: end = mid - 1print(end)비기너 문제 : 그대로 출력하기 2 https://www.acmicpc.net/problem/11719미들러 문제 : 랜선 자르기 https:.. 2025. 1. 14. 99클럽 코테 스터디 1일차 TIL + 백준 2776 암기왕 (파이썬) ※ 2776 암기왕https://www.acmicpc.net/problem/2776 문제 해결 TIP처음에는 수첩 1과 수첩 2를 리스트 형태에 저장하여 풀었지만, 시간 초과 문제가 발생하였다. 이후 in 연산자의 시간 복잡도를 줄여주는 set 를 수첩 1에 사용하여 중복 제거와 비교 연산을 효율적으로 해주었다. 전체 코드T = int(input())for i in range(T): N = int(input()) set_N = set(list(map(int,input().split()))) M = int(input()) list_M = list(map(int,input().split())) for j in list_M: if j in set_N: .. 2025. 1. 13. [Algorithm] PCCP 기출문제 340213 동영상 재생기 | 프로그래머스 ※ 340213 동영상 재생기https://school.programmers.co.kr/learn/courses/30/lessons/340213 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 해결 TIP모든 시간이 "00:00" 형태로 되어 있어 분과 초를 따로 계산하기 번거롭다. 시간을 모두 초로 변환하여 계산해준다. 전체 코드def change_to_sec(time): minutes, seconds = time.split(':') time = int(minutes)*60 + int(seconds) return timedef solution(video_len,.. 2025. 1. 9. [SQL] 재구매가 일어난 상품과 회원 리스트 구하기, GROUP BY ※ 재구매가 일어난 상품과 회원 리스트 구하기https://school.programmers.co.kr/learn/courses/30/lessons/131536 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 해결 TIP재구매했다는 것은 USER_ID와 PRODUCT_ID가 동시에 같아야 하므로, GROUP BY절을 활용해 묶어 개수를 세어 계산해준다. 전체 코드 SELECT USER_ID, PRODUCT_IDFROM ONLINE_SALEGROUP BY USER_ID, PRODUCT_IDHAVING COUNT(*)>=2ORDER BY USER_ID ASC, PRODUCT_ID DESC; 2025. 1. 3. [Algorithm] 백준 14620 꽃길 | 파이썬 (브루트포스) ※ 14620 꽃길https://www.acmicpc.net/problem/14620 문제 해결 TIP메인 로직은 backtrack안의 for문이다. 우선 첫번째 꽃을 심는다. 이후 두번째 꽃은 가능한 모든 위치에 심으면서 최소 비용이 나오는지 확인한다. 세번째 꽃도 가능한 모든 위치에 심으면서 최소 비용이 나오는지 확인한다. 이후, 꽃을 다시 뽑고, 첫 번째 꽃은 다른 위치에 심고 다시 반복 진행한다. 전체 코드N = int(input())money_graph = [list(map(int, input().split())) for _ in range(N)]visited = [[False] * N for _ in range(N)]dx = [0, 0, 1, -1]dy = [1, -1, 0, 0]# 꽃을 심을.. 2024. 9. 21. [SQL] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기, JOIN ※ 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기https://school.programmers.co.kr/learn/courses/30/lessons/157339 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 해결 TIP문제에서 주어진대로 차례대로 진행해보자.1) 자동차 종류가 '세단' 또는 'SUV' 인 자동차 중 2022년 11월 1일부터 2022년 11월 30일까지 대여 가능한 경우SELECT CAR_ID, CAR_TYPE, DAILY_FEEFROM CAR_RENTAL_COMPANY_CARWHERE CAR_ID NOT IN (SELECT .. 2024. 9. 11. 이전 1 2 3 4 5 ··· 23 다음