본문 바로가기

3. 프로그래머스_다리를지나는트럭 코드 : https://github.com/diqksrk/AlgorithmPrac/blob/master/programmers/programmers_truck.py GitHub - diqksrk/AlgorithmPrac Contribute to diqksrk/AlgorithmPrac development by creating an account on GitHub. github.com 1. from collections import deque 2. bridge = deque(0 for _ in range(bridge_length)) 3. truck_weights.reverse() 4. total_weight -= bridge.popleft() 1. deque란 ? deque의 개념 보통 큐(queue)는 선..
2. 프로그래머스_프린터 def solution(priorities, location): answer = 0 queue = [(i, p) for i, p in enumerate(priorities)] while (True): cur = queue.pop(0) if any(cur[1] < q[1] for q in queue): queue.append(cur) else: answer+=1 if (cur[0] == location): return answer 역시 마찬가지로 내가 궁금한것들 위주로 리뷰를 진행해보겠다. 또한, 파이썬의 함수와 더불어 친숙해지기까지 시간복잡도, 공간복잡도와 같은 항목에 대해서 세세한 리뷰는 자재하려고 한다. 1. enumerate? 2. q[1] for q i queue? 1. 내장함수 enumerate..
1. 백준_기능개발 import math def solution(progresses, speeds): answer = [] days = [] dayCount = 1 for i in range(len(progresses)): days.append(math.ceil((100 - progresses[i]) / speeds[i])) standardDay = days.pop(0) for day in days: if (standardDay >= day): dayCount+=1 else: answer.append(dayCount) standardDay = day dayCount=1 if (dayCount != 0): answer.append(dayCount) return answer 순서는 내가 생각했을때, 좀더 확실히 알았으면 좋겠다..
for문 정리 1. 내장함수 enumerate 일단 기본적으로 파이썬에서 for문을 돌리는 방식에 대해서 알아보고자 한다. >>> for letter in ['A', 'B', 'C']: ... print(letter) ... A B C 파이썬에서는 for 루프는 기본적으로 for in : 형태로 작성이 되는데요. 여기서 부분에는 리스트(list), 터플(tuple), 문자열(string), 반복자(iterator), 제너레이터(generator) 등 순회가 가능한 왠만한 모든 데이터 타입을 사용할 수 있습니다. 부분은 흔히 순회 변수(loop variable)라고 하는데, 부분에 넘긴 객체가 담고 있는 원소들이 루프가 도는 동안 하나씩 차례로 할당됩니다. 여기서 원소뿐만 아니라 index도 출력하고 싶을때 사용하는것이..
JWT란 ? Auithorization 인가(Authorization)는 요청을 보낸 유저가 그 서비스를 사용할 수 있는 유저인지를 확인하는 절차이다. 인가 = Can you do that? 을 확인하는 과정 서버는 그 유저를 어떻게 확인할까? Authorization 절차는 다음과 같다. 서버에 로그인을 성공한 유저는 인증을 받았다는 표시로 그 서버가 발행한 토큰을 발급받는다. 보통 이 토큰을 access token 이라고 한다. 이 token에는 user id와 같이 아주 중요한 정보가 아니면서도(예를 들어 주민등록번호 같은) 유저를 확실하게 구분할 수 있는 정보가 있어야 한다. 인증을 받은 유저는 request를 보낼 때 request header에 보통 'Authorization' 라는 이름으로 token 정..
Java Tomcat OutOfMemoryError : PermGen space 개발을 한후 서버에 올리고 톰캣을 실행하다 보면 발생할수 있는 볼수 있는 에러이다. PermGen space 는 Class, Method 등이 저장되는 영역으로 JVM에 의해 사용된다. 즉, OutOfMemory 에러는 설정된 메모리가 부족하여 발생하는 에러이다. 간단히 톰캣의 메모리를 설정해주면 해결된다. 이를 해결하기 위해 톰캣의 메모리를 늘려보자. OS는 window server2012, 톰캣은 7.0(무설치), JDK는 1.7 기준이다. 우선 자바가 설치된 폴더의 bin 폴더로 이동해 Jconsole.exe 파일을 실행한다. 그럼 위와 같은 Monitoring 창이 뜨고 현재 설정된 메모리를 확인할 수 있다. 톰캣의 bin 폴더로 이동하자. catalina.bat 파일을 편집으로 열어 setloc..
JVM 메모리 구조 JVM이란 JVM은 Java Virtual Machine의 약자로, 자바 가상머신이라고 부릅니다. 자바가 지금처럼 대중화 될수 있도록 한 원인 중 하나가 JVM이며, 자바와 운영체제 사이에서 중개자 역할을 수행합니다. 이 JVM은 C언어나 C++과 같은 레지스터 기반으로 작동하지 않으며, 스택 기반으로 작동합니다. JVM의 가장 큰 특징인 운영체제에 종속적이지 않은 특징은, 다음과 같은 형식으로 프로그램을 실행할 경우 잘 나타납니다. 1. 자바 컴파일러에 의해 자바 소스 파일을 바이트 코드 파일로 변환한다. 2. 변환된 바이트 코드 파일을 JVM이 읽어 각 운영체제에 맞는 실행 파일로 변환한다. 3. 변환된 실행파일을 운영체제가 읽어 이를 실행한다. 따라서 만약 리눅스위에서 Java파일을 만들고 이를 다..
2일차 Kafka Event Streaming 위키백과에서의 Event Stream Processing → 실시간 스트리밍을 의미한다. 이벤트 스트리밍이 중요한 이유는 데이터 가용성(Availability) 때문이다. 스트리밍은 데이터를 추출하는 시점부터 시간과 주체에 구애받지 않고 접근이 가능하다. 이벤트 스트림의 형태로 실시간으로 데이터를 캡처하는 방식이다. 검색할 수 있도록 이벤트 스트림을 영구적으로 저장한다. 실시간으로 이벤트 스트림을 조작, 처리 및 반응한다. 필요에 따라 이벤트 스트림을 다른 목적지 기술로 라우팅할 수 있다. 특징 실시간으로 필요한 기능들을 처리할 수 있다. 실시간으로 추적하고 모니터링할 수 있다. 센서 데이터를 지속적으로 캡처하고 분석할 수 있다. 고객 상호 작용 및 데이터를 수집하고 즉시 대..