스터디 14

완전탐색_바둑이 승차_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__=="..

이분탐색_ 이분탐색,랜선자르기,뮤직비디오,마구간 정하기

이분탐색 ! 시간 복잡도 : O(log n) 무조건 정렬이 되어있어야한다. start와 end 라는 포인터 변수를 만든다 . mid 라는 중간 지점 변수를 만들어서 (start + end ) // 2 로 설정한다. 이분탐색 코드 : if __name__=="__main__" : n,m = map(int,input().split()) num = list(map(int,input().split())) num.sort() start,end = 0,n-1 while start capacity : # cd 추가 cnt +=1 sum = x else : sum += x return cnt if __name__=="__main__" : n,m = map(int,input().split()) music = list(m..

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

스터디는 이미 끝났지만 이미 구매해놓은 인강 다 듣고 풀어야지.. ---- 🐾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 무게까지 담길 때의 최대 가..

쿠버네티스

쿠버네티스는 Iaas와 Paas 사이에 위치한다. 왼쪽으로 갈수록 low하다. 컨테이너가 뭔데? 예전에는 가상머신을 띄울 때 일일히 OS를 설치하고 그 위에 앱을 돌리는 구조였다. 이는메모리를 잡아먹는 등 성능을 낮춘다. 이미지는? 우분투를 띄울 때 OS를 위한 모든 설정값, 라이브러리 등을 모두 가지고 있는 것을 이미지라고 생각하자. 이미지를 실행한 상태가 컨테이너다. 컨테이너를 관리해주는 툴이 쿠버네티스이다. 코드를 업데이트하면 빌드를 하고, 빌드를 하면 이미지를 만든다. 그리고 원래 돌아가던 컨테이너를 내리고 새 이미지를 실행시켜 만든 컨테이너를 돌린다. 쿠버네티스는 마스터노드, 워커노드로 이루어져있고 가장 작은 단위는 pod이다. [ Pod : 쿠버네티스의 가장 작은 배포단위 ( 한개 이상의 컨테..

[2주차]구글클라우드_배포와 재배포&깃헙 클론 후 배포(ft.패키징)

가상화 기술 : 각각 용도가 다른 3개의 물리 서버 (30%만 사용중) -> 한개의 서버를 아끼고 한개의 서버에 2개를 올린다. 앱 엔진의 장점 1. 관리가 용이하다. (오토 스케일링, 로드 밸런싱 ) 2. 확장이 용이하다. 3. 무중단 서비스 4. 장비사용 비용청구가 사용한 만큼만 과금이 된다. 1. yaml 파일 추가 App Engine 표준 환경에 앱을 배포하려면 설명자 파일을 만들어야한다. app.yaml 파일에서 를 입력해준다. DemoApplication.java에 들어가서 import를 한줄 추가해준다. import org.springframework.web.bind.annotation.*; 다시 만든 프로젝트 위치로 이동하여 위 같은 명령어를 입력하면 로컬에서 실행된다. 표시한 픽토그램을 ..

[1주차]구글 클라우드 - 인스턴스 생성,spring 프로젝트 올리기 & 실행

1. Compute Engine -> VM 인스턴스로 들어갑니다. 2. 이름과 리전 머신 유형을 선택합니다. 3. 부팅디스크 설정 - 우분투 20.04 LTS x86/64로 설정합니다. 4. 방화벽과 엑세스 범위를 설정합니다. 만들기 버튼을 눌러줍니다!! 자 이제 인스턴스 생성이 끝났습니다-!! 1. 우측 상단에 다음과 같은 버튼을 누르면 콘솔창에 들어갈 수 있습니다. curl https://start.spring.io/starter.tgz \ -d bootVersion=2.3.0.RELEASE \ -d dependencies=web \ -d baseDir=gce-standard-example | tar -xzvf - 2. 입력해주면 스프링 프로젝트를 만들어줍니다. 이 상태에서 ls를 입력하면 gce-s..

[7]알고리즘스터디 - 섹션7_3주차 스터디

파이썬 알고리즘 문제풀이 스터디 - 알까기 _ 섹션 7 티스토리 마크다운이 이상해서 올려놓은 깃허브 주소도 올린다. https://github.com/dumi33/TIL_TodayILearn/blob/main/220225/%EC%84%B9%EC%85%987.md GitHub - dumi33/TIL_TodayILearn: 오늘 배운 코드/내용을 정리해서 올립니다. 오늘 배운 코드/내용을 정리해서 올립니다. Contribute to dumi33/TIL_TodayILearn development by creating an account on GitHub. github.com 문제 1 - 최대점수 구하기(DFS) 내가 만든 코드 1, 2번은 잘 돌아가는데 나머지는 시간초과 def dfs(x,score, time..

[6]알고리즘스터디 - 섹션6_3주차 스터디

파이썬 알고리즘 문제풀이 스터디 - 알까기 _ 섹션 6 티스토리 마크다운이 이상해서 깃허브 주소도 올린다. https://github.com/dumi33/TIL_TodayILearn/blob/main/220223/%EC%84%B9%EC%85%986.md 문제 1 - 재귀함수를 이용한 이진수 출력 def dfs(x) : if x >0: tmp = x//2 dfs(tmp) print(x%2,end = '') if __name__ == "__main__" : n = int(input()) dfs(n) def dfs(x) : if x == 0 : return else : dfs(x//2) print(x%2,end = '') if __name__ == "__main__" : n = int(input()) dfs(..

[3]알까기 스터디 -섹션3_1주차(일요일)

알까기 스터디 - 파이썬 알고리즘 문제풀이 _섹션 3 문제 1 - 회문 문자열 검사 n = int(input()) for i in range(n) : Origin = input() Origin = Origin.lower() # 대소문자 구분을 없애기위해 모두 소문자로 Test = Origin[::-1] isTrue = True for j in range(len(Origin)//2) : if Origin[j] != Test[j] : isTrue = False print("#%d %s" %(i+1 ,'YES' if isTrue==True else 'NO')) # 파이썬 출력방법 혼자 푼 풀이 섹션 2에서 출력방법을 알게되어 수월하게 풀었다. 강사님 풀이 2 n = int(input()) for i in ra..