일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 시각화
- 파이썬
- ux·ui디자인
- DP
- 멋재이사자처럼
- 그리디
- Plotly
- likelionlikelion
- folium
- Join
- 멋쟁이사자처럼멋쟁이사자처럼
- 마이온
- BFS
- GNN
- 알고리즘
- seaborn
- SQL
- GIS
- DFS
- 인턴10
- 멋사
- intern10
- Python
- 프로젝트
- 마이온컴퍼니
- pyhton
- parklab
- likelion
- 멋쟁이사자처럼
- TiL
- Today
- Total
목록STUDY/Python 알고리즘 (23)
지금은마라톤중
이 문제는 문제 해석을 하는데 어려웠습니다. 문제를 정확히 이해해야 풀이가 가능했습니다. 접근법- 서류와 면접 둘 중 하나라도 뒤쳐지지 않아야한다 → 하나를 기준으로 잡고 하나를 비교- 서류를 기준으로 정렬 후 면접의 등수를 비교- 서류 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..
이 문제는 그리디 문제입니다.실버5 난이도여서 뚝딱하고 해결할줄 알았지만 예상외로 복잡한 코드로 풀었습니다. 접근법- 리스트 생성- 카약이 손상되었는데 여분 카약이 있는 팀을 우선적으로 제거- 그 후 반복문 통해 앞뒤 팀의 여분 카약 여부 체크하고 있을 시 여분 카약 리스트(rev_r_teams)에서 제거- 조건문에 걸리지 않으면 출발하지 못한 팀 cnt 증가 n,s,r = map(int,input().split())teams = [i for i in range(1,n+1)]s_teams = list(map(int,input().split()))r_teams = list(map(int,input().split()))cnt = 0rev_s_teams = list(set(s_teams)-set(r_teams..
실패한 접근법- matrix를 그리고 반복문을 통해 구현→ 시간초과로 실패import sysinput = sys.stdin.readlinen, m = map(int,input().split())matrix = [list(map(int,input().split())) for _ in range(n)]for _ in range(m): result = 0 x1,y1, x2,y2 = map(int, input().split()) for i in range(y1, y2+1): if x1 == x2 : result += matrix[i-1][x1-1] else: result += sum(matrix[i-1][x1-..