김태원 6

20231108_주사위게임_[Python알고리즘]

오늘도 역시 ~ 인프런의 김태원 - 파이썬 알고리즘을 풀었다. 이름은 주사위게임 3개를 던지는데 3개, 2개 , 1개가 같은 눈이 나오는 경우를 나누어 상금이 달라진다. 나는 갸우뚱하다가 문제를 풀었고 성공은했다. if __name__=="__main__" : n = int(input()) answer = [] for i in range(n): arr_input = list(map(int,input().split())) arr = [0]*7 max_idx = 0 max_val = 0 for x in arr_input : arr[x] +=1 if max(arr) != 1 : for idx, val in enumerate(arr) : if val == max(arr) : max_idx = idx break ..

취업/TIL 2023.11.08

완전탐색_바둑이 승차_cut edge 방법,DFS 시간초과를 방지하는 법

if ans > val + ( total - tsum ) : return 전체 합에서 tsum(바둑이를 태웠건 안태웠건 지나간 바둑이의 무게) 을 빼면 앞으로 더할 수 있는 바둑이의 무게가 나온다. 여기서 val을 더한 값이 ans보다 작다면 더 할 필요가 없다. 끝까지 가도 어차피 ans보다 작기 때문이다. dfs에 tsum을 인수로 추가하여 시간 초과를 막는다는 것이 흥미롭다. def dfs(idx,val,tsum) : global ans if val > c : return if ans > val + (total-tsum) : return if idx == n : ans = max(ans,val) return else : dfs(idx+1,val+arr[idx],tsum+arr[idx]) dfs(id..

그리디_회의실 배정, 씨름선수, 창고 정리, 침몰하는 타이타닉, 증가순열만들기, 역수열

그리디는 탐욕적인 이라는 의미로 지금 현재 가장 최적의 것을 계속 골르는 것이다. 주로 정렬과 함께 한다. 회의실 배정 코드 : if __name__=="__main__" : n = int(input()) meeting = [list(map(int,input().split())) for _ in range(n)] meeting.sort(key = lambda x : (x[1],x[0])) endTime,cnt = 0,0 for s,e in meeting : if s >= endTime : cnt +=1 endTime = e print(cnt) => 끝나는 시간을 오름차순으로 정렬한 후 시작시간이 이전 회의의 끝나는 시간보다 늦거나 같으면 해당 회의를 넣는다. 씨름 선수 코드 : if __name__=="..

냅색 알고리즘 _ 가방문제, 동전교환, 최대 점수 구하기

스터디는 이미 끝났지만 이미 구매해놓은 인강 다 듣고 풀어야지.. ---- 🐾20220914 복습 어떻게 풀 때마다 까먹지...? 그래도 처음 봤을 때 보다 더 빨리 풀었다는 것에 의의를 둔다... 가방 문제 : if __name__=="__main__" : n,m = map(int,input().split()) dy = [0]*(m+1) for i in range(n) : w,v = map(int,input().split()) for j in range(w,m+1) : dy[j] = max(dy[j-w] + v, dy[j]) print(dy[m]) weight 와 value가 주어질 때 주어진 무게까지 담을 수 있는 가방에서 최대의 가치를 만들어라 dy[j] 의 의미 : j 무게까지 담길 때의 최대 가..

[5]알고리즘스터디 - 섹션5_2주차 스터디

파이썬 알고리즘 문제풀이 스터디 - 알까기 _ 섹션 5 문제 1 - 가장 큰 수 num ,m = map(int,input().split()) num = list(map(int,str(num))) ans = [] for val in num: while ans and m and ans[-1] 0 : # 제거할 숫자가 남았을경우 끝자리 값을 제거 ans = ans[:-m] res = ''.join(map(str,ans)) # join은 문자열로 합해주기때문에 str을 이용 print(res) 연속된 숫자를 각각 하나의 숫자로 바꾸는 법 -> list(map(int,str(num))) 문제 2 - 쇠막대기 s = input() stac..

[1]알고리즘 스터디 - 알까기 시작 _섹션2(1)

타대학 사람들과 알고리즘 스터디를 시작하였다. https://www.inflearn.com/course/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4-%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8/dashboard 파이썬 알고리즘 문제풀이 (코딩테스트 대비) - 인프런 | 강의 파이썬을 이용한 코딩테스트 문제풀이를 합니다., - 강의 소개 | 인프런... www.inflearn.com 이 강의를 보고 공부하며 매주 수요일, 일요일 저녁 2시간마다 줌으로 모여, 복습 & 질의 응답을 가진다. 이를 기록하려고 한다. 한달동안 잘 마무리 할..