백준 1439 뒤집기
풀이1234567891011121314151617181920212223import sysst = sys.stdin.readline().rstrip()stl=[]temp=''flag=st[0]for s in st: if flag!=s: stl.append(temp) temp=s flag=s else: temp+=sstl.append(temp)zcount=0ocount = 0for st in stl: if st[0]=='0': zcount+=1 else: ocount+=1print(min(zcount,ocount))
뒤집는 횟수는 결국은 1과 0 뭉텅이 중 뭐가 제일 많이 나왔느냐라 생각했다
처음엔 횟수로 나눴는데 생각을 잘못해서 오류가 떴었다. 그렇게 푸는게 시간이 덜 들어갈 듯하다
회고
solved.ac 기준 silver 3이상으로 풀자
일단은 조 ...
백준 1417 국회의원 선거
풀이1234567891011121314151617181920212223import sysimport heapqnum = int(sys.stdin.readline())heap = []ds = 0for n in range(num): nm = int(sys.stdin.readline()) if n==0: ds=nm else: heapq.heappush(heap, -nm)count = 0while heap: max = -heapq.heappop(heap) if ds>max: break ds+=1 heapq.heappush(heap,-max+1) count+=1print(count)
우선순위를 부여해서 값을 구하면 될거라 생각했다
이런 정렬 자료구조에서 보통은 오름차순 정렬이 되서 값이 나오는데 이름 내림차순으로 바꿀 필요가 있었다
heapq를 사용했고, 값을 넣을 때 음수로 바꿔서 넣음으로써 내림차순을 ...
Docker 공부
Docker란 무엇인가?
Docker는 Linux Container에 여러 기능을 추가함으로써 Application을 좀 더 쉽게 사용할 수 있게 만들어진 오픈소스 가상화 플랫폼
Docker는 격리된 공간에 필요한 라이브러리, 실행파일만 담아놓고 사용하기 때문에 부담이 줄어든다.
Docker는 컨테이너 생성 및 관리가 매우 쉽다
일종의 모듈식(경량화) 가상 머신이다
컨테이너 (Container)Docker에서의 컨테이너의 개념은 다양한 프로그램, 다양한 운영체제 및 실행 환경등을 컨테이너로 추상화하여 동일한 인터페이스를 제공하여, 배포 및 관리를 단순화 시키는 것을 말한다.
가상 머신과 차이점가상 머신은 Hypervisor를 이용해 하나의 Host에서 여러 개의 OS를 생성해 사용하는 방식이다. 가상 머신의 Guest OS들은 서로 간에 완전히 독립된 공간을 할당 받는다.
하지만, 이런한 작업 방식은 Hypervisor를 반드시 거쳐야 하기 때문에 성능 저하가 발생합니다. 또한 ...
백준 1343 폴리오미노
풀이1234567891011121314151617181920212223242526272829303132import sysst = sys.stdin.readline().rstrip()stl = []def solve(st): answer='' temp='' for s in st: if temp=='': temp+=s elif temp[0]==s: temp+=s else: stl.append(temp) temp=s stl.append(temp) if len(st)==0: return -1 for st in stl: if st[0]=='X': if len(st)%2!=0:#짝수가 아닌 것은 만들 수 없으니까 제거 한다 ...
신규 아이디 추천
풀이1234567891011121314151617181920212223def solution(new_id): answer = '' answer = new_id.lower() temp ='' for s in answer: if s.isalnum() or s=='-' or s=='_'or s=='.': temp+=s answer=temp temp=answer[0] for i in range(1,len(answer)): if answer[i-1]=='.' and answer[i]=='.': continue temp+=answer[i] answer=temp.strip('.') if answer=='': ...
더 맵게
풀이123456789101112131415def solution(scoville, K): answer = 0 while True: scoville.sort(reverse=True) if len(scoville)==1 and scoville[0]<K: return -1 elif scoville[-1] >=K: break n1 = scoville.pop() n2 = scoville.pop() scoville.append(n1+2*n2) answer+=1 return answer
보자마자 떠오른 아이디어는 반복문 안에서 스택 사용해서 계속 정렬하면서 값을 구하는 것이었다
답은 맞는데 정렬하는 부분에서 시간 초과가 당연히 발생한다
1234567891011121314151617import heapqdef solution( ...
폰켓몬
풀이123456789def solution(nums): answer=0 s = list(set(nums)) size = len(nums)/2 if len(nums)%2==0 else int(len(nums)/2)+1 if size>len(s): answer = len(s) else: answer = size return answer
회고
너무 쉽게 풀려서 뭐지 싶었는데, 오르는 점수 보니까 쉬운 문제였다
별다른 로직이 없기도 했음
Web RTC란?
Web RTC란?Web RTC는 드라이버나 플러그인 설치 없이 웹 브라우저 간 P2P 연결을 통해 데이터 교환을 가능하게 하는 기술입니다.Web RTC의 핵심을 꼽으라면 저는 시그널링을 이야기할 것입니다브라우저 간 시그널링을 통해 별도의 중간자를 거치지 않고 P2P 연결이 가능해지기 때문입니다.즉 중개 서버가 없기 때문에 빠른 속도도 보장되고, HTTPS가 강제되기 때문에 중간자 공격으로부터 보호도 됩니다.
그렇다면 브라우저는 여러 개인듯 브라우저 호환성은 괜찮은가? 의문이 생깁니다Web RTC는 구글이 주도한 오픈소스 프로젝트 기반 웹 표준이라 크롬과 호환성이 높습니다.파이어폭스나 오페라 등도 WEebRTC 표준을 따르고 있죠. 하지마 애플 특유의 폐쇄성으로 WebKit 기반 브라우저라 WebRTC 지원은 하지만 호환성은 떨어집니다. 즉 다양한 플랫폼에 대한 표준화가 완전히 구현되지 않은 것입니다.
그래도 괜찮습니다. 이런 크로스 브라우징 이슈를 해결하기 위해서 adapter.js ...
로또의 최고 순위와 최저 순위
풀이
순서에 상관 없이 번호만 일치하면 된다
바꿀 수 있는 번호는 0이다
로또 당첨 번호 받아서 순차적으로 안에 값이 있는지 확인해서, 없는 것만 찾으면 될 듯하다최소 당첨 번호는 일치하는 숫자의 갯수이다. 최대 당첨 번호는 전체 자릿 수에서 일치하지 않는 번호만 빼면 된다
1234567891011121314151617181920212223def solution(lottos, win_nums): answer = [] correct,zero = 0,0 for l in lottos: if l==0: zero+=1 elif l in win_nums: correct+=1 mini,maxi=0,0 maxi = correct+zero mini = correct if maxi==0 or maxi ==1: answer.append(6) else: ...
신고 결과 받기 - Programmers
풀이
한 유저가 중복해서 같은 유저를 계속 신고할 수 없다
k 번 이상 신고된 유저는 정지되고, 그 결과를 모든 유저에게 정지 사실을 메일로 발송한다
즉 유저는 신고한 유저의 정보를 가지고 있어야 하고, 유저마다 신고된 횟수도 기록되어야 한다.최종적으로 answer에는 각 유저들이 받은 처리 메일만 기록하면 된다.
풀이 방법은 신고 받은 유저 딕셔너리를 만들고, 해당 유저를 신고한 유저들을 한 명씩 넣는다그리고 연산 끝에 한 번에 정지된 이용자를 정리한다
1234567891011121314151617score = {}result = {}def solution(id_list, report, k): answer = [] for id in id_list: score[id] =[] result[id]=0 for rp in report: gUser,bUser = rp.split() scor ...