일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- paper review
- intern10
- Rag
- seaborn
- ux·ui디자인
- 프로젝트
- 그리디
- 멋쟁이사자처럼
- BFS
- 멋재이사자처럼
- folium
- SQL
- DP
- TiL
- likelion
- likelionlikelion
- 마이온
- Join
- 시각화
- 인턴10
- graphrag
- 파이썬
- 알고리즘
- DFS
- Python
- 멋사
- parklab
- tog
- 마이온컴퍼니
- GNN
- Today
- Total
목록알고리즘 (25)
지금은마라톤중

접근법- first_half 테이블 기준으로 icecream_info 테이블 조인, 키 = flavor- 그룹바이 : ingredient_type- 정렬 : total_order(오름차순)- total_order : ingredient_type별 total_order의 합계 SELECT INGREDIENT_TYPE, SUM(TOTAL_ORDER) AS TOTAL_ORDERFROM FIRST_HALF AS FLEFT JOIN ICECREAM_INFO AS I ON F.FLAVOR = I.FLAVORGROUP BY INGREDIENT_TYPEORDER BY TOTAL_ORDER https://school.programmers.co.kr/learn/courses/30/lessons/133026 프로그..

접근법- offline_sale 테이블 기준으로 product 테이블 조인, 키 = product_id- 그룹바이 : product_code- 정렬 : 매출액(내림차순), 상품코드(오름차순)- 매출액 : (판매량 * 가격)의 합계 SELECT PRODUCT_CODE, SUM(SALES_AMOUNT * PRICE) AS SALES FROM PRODUCT AS PRIGHT JOIN OFFLINE_SALE ON P.PRODUCT_ID = OFFLINE_SALE.PRODUCT_IDGROUP BY PRODUCT_CODEORDER BY SALES DESC, PRODUCT_CODE ASC https://school.programmers.co.kr/learn/courses/30/lessons/131533 ..

접근법- left join으로 테이블 2개를 author_id로 연결- 조건 : 카테고리- 정렬 : 출판일- 출판일 : 날짜 포맷 맞추기 SELECT B.BOOK_ID, A.AUTHOR_NAME, DATE_FORMAT(B.PUBLISHED_DATE, "%Y-%m-%d") AS PUBLISHED_DATEFROM BOOK AS BLEFT JOIN AUTHOR AS A ON B.AUTHOR_ID = A.AUTHOR_IDWHERE CATEGORY = "경제"ORDER BY PUBLISHED_DATE https://school.programmers.co.kr/learn/courses/30/lessons/144854 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 ..

이 문제는 문제 해석을 하는데 어려웠습니다. 문제를 정확히 이해해야 풀이가 가능했습니다. 접근법- 서류와 면접 둘 중 하나라도 뒤쳐지지 않아야한다 → 하나를 기준으로 잡고 하나를 비교- 서류를 기준으로 정렬 후 면접의 등수를 비교- 서류 1등의 면접 등수 활용 → 서류 1등을 제외한 모든 참가자는 서류 1등보다 서류가 뒤쳐지므로 면접에서 더 좋은 등수를 맞아야지 합격!!- 또한 커트라인을 갱신하여 커트라인을 조정 ( 서류 기준 정렬이기 때문에 반복문에서 서류 등수가 높은 순부터 나오기 때문) import sysinput = sys.stdin.readlinet = int(input())for _ in range(t): n = int(input()) cnt = 1 scores ..

접근법- 무한 반복문 활용- B의 맨 뒷자리에 1을 가졌는지 체크하여 연산- 2로 나누어 떨어지는지 체크하여 연산- 반복문 종료되면 횟수 출력- 2가지 연산 중 하나라도 작동하지 않으면 만들 수 없는 경우임 → -1 출력 a,b = map(int,input().split())cnt = 1while b != a : tmp = b if b % 10 == 1: b //= 10 elif b % 2 == 0: b //= 2 cnt +=1 if tmp == b: print(-1) breakelse : print(cnt)

접근법- 0과 1로 split했을 때 나오는 갯수로 파악- 11처럼 연속됐을 때 공백이 발생 → ""은 제거- 0으로 나눴을 때와 1로 나눴을 때의 비교하여 최소값 출력 s = input()cnt0 = s.split("1")cnt1 = s.split("0")cnt0 = [ k for k in cnt0 if k != ""]cnt1 = [ k for k in cnt1 if k != ""]print(min(len(cnt0), len(cnt1)))

1. 탐욕적(Greedy) 알고리즘이란?Greedy는 “탐욕스러운, 욕심 많은”이란 뜻을 가진 용어로, 바로 눈앞의 이익만 쫓는 알고리즘을 말합니다.최적화 문제를 대상으로 하며, 최적해를 찾을 수 있으면 그것을 목표로 삼고, 찾기 어려운 경우에는 주어진 시간 내에 그런대로 괜찮은 해를 찾는 것을 목표로 삼습니다. 2. 그리디 알고리즘의 2가지 조건탐욕 선택 속성탐욕 선택 속성이란 앞의 선택이 이후 선택에 영향을 주지 않는 것을 말합니다. 즉, 선택을 다시 고려하지 않습니다.최적 부분 구조최적 부분 구조란 문제의 최적 해결 방법이 부분 문제에 대한 최적 해결 방법으로 구성되는 경우를 말합니다. 3. 그리디 vs 다이나믹 프로그래밍(DP)두 알고리즘은 흔히 비교되는데, 서로 풀 수 있는 문제의 성격이 다..

이제 그리디 문제를 풀어볼까 합니다. 접근법- 최소시간을 구하는 문제- 조건에 맞게 분기- 공통 좌표값과 여분 좌표값 ex) (x,y) = (2,5) → 공통 좌표값 : 2 , 여분 좌표값 : 3- 비교1 : 대각선 이동 vs 한 블록 이동 *2 -> 공통 좌표값 이동 시 - 비교2: 대각선이동 vs 한 블록 이동 → 공통 좌표값 외 여분 좌표 이동 시 조건 비교비교1 1) 공통 좌표값까지 대각선 이동 후 여분 좌표값 한 블록 이동비교2 2-1) 공통 좌표값까지 대각선 이동 후 여분 좌표값만큼 대각선 이동 2-2) 공통 좌표값까지 대각선 이동 후 여분 좌표값-1만큼 대각선 이동 후 1만큼 한 블록 이동 3) 한 블록 이동만 사용 코드 : 조건문 활용x,y,w,s = map(int,input..