반응형
문제 설명 입출력 예제 풀이 코드 이 문제는 완전탐색 탐색 문제로 완전 탐색 답게 무식하게 숫자를 하나씩 더해가면서 해당 숫자가 몇번째 종말의 수인지 찾아야 한다. 그래도 반복문을 덜 타게 규칙이 있지 않을까?했지만 그런 규칙을 찾긴 힘들었다 다만 반복문을 덜타도록 탐색하는 수 num을 1부터가 아닌 종말의 수인 "666"부터 시작하도록 하였다. 정답 코드 import sys input = sys.stdin.readline n = int(input()) cnt = 0 # 몇 번째 종말의 수인지 카운팅 num = 666 while True: if "666" in str(num): # 666이 num에 포함되어 있다면 cnt = cnt + 1 if cnt == n: # 구하자고 하는 n번째 종말의 수와 같다..
문제 설명 입출력 예제 풀이 코드 이 문제는 현대오토에버 코딩문제에 나온 문제라고 한다. 사실상 실버난이도인 만큼 접근만 한다면 쉽게 풀 수 있는 문제다. 제한 사항을 보면 N, M 입력값의 제한 범위가 100,000이다. 이중 반복문으로 풀면 쉽게 풀수는 있겠지만 2중 반복문은 O(n^2) 시간 복잡도를 갖기 때문에 시간초과가 발생한다. 따라서 O(N)이나 O(logN)의 시간 복잡도로 풀어야 하는데 문제에서도 이미 정답을 말해줬다."구간합" 문제를 푸는 방법은 다음과 같다. 주어진 값들의 누적합을 갖는 리스트를 만든다. PrefixSum 여기서 PrefixSum에 0을 넣어 놓은 이유는 주어지는 구간 i가 1부터 시작하기 때문에 인덱싱에러를 방지하기 위해서이다. 각 수들의 합을 갖는 변수 total을..
무중단 배포란? 무중단 배포를 사용하지 않을 경우 실제 서비스를 서버 한대만을 사용해 운영한다고 가정해보자. 현재 서비스 중인 서비스는 application-V1을 배포한 서비스이다. 그런데 기능이 업데이트되어 application-V2를 새로 개발해 새로운 버전을 배포하려한다. 이 새로운 버전 V2를 배포하기 위해서는 V2 버전의 빌드 파일을 서버에 배포를 해야한다. V1과 V2는 서로 같은 포트를 사용하기 때문에 V2를 배포하기 위해서는 V1버전을 통해 실행하고 있는 서비스를 종료해야만한다. 이 경우 V1이 종료되고 V2 버전이 실행되는 사이 유저가 서비스를 이용할 수 없는 시간이 생기는데, 이를 "다운타임"이라고 한다. 무중단 배포 무중단 말 그대로 서비스가 중단되지 않은 상태로 새로운 버전을 배포..
도커 이미지는 컨테이너를 만들기 위한 "압축파일" 개념이다.이미지는 한번 만들어지면 이미지 내의 정보는 절대 변하지 않으며(불변성), 이미지를 통해 컨테이너를 만들 수 있다.이 이미지는 컨테이너를 만들었다고 사라지지 않고, 하나의 이미지로 여러개의 컨테이너를 만들 수 도 있다. 이 이미지를 만들기 위해서는 dokckerfile 도커파일을 작성해야 한다.도커 파일 작성방법은 아래 링크를 통해 확인할 수 있다. [Docker] dockerfile의 개념과 작성법에 대해 알아보자. hstory0208.tistory.com 도커 이미지는 컨테이너를 생성하기 위한 모든 정보를 갖고 있기 때문에 보통 수백MB ~ 수GB가 넘는다. (VM에 비해서는 상당히 작은 용량)그런데 기존 이미지에서 작은 변경사항이 생겨 도커..
DockerFile이란? Dockerfile은 Docker Image를 생성하기 위한 스크립트(설정파일)이다. 여러가지 명령어를 토대로 Dockerfile을 작성한 후 빌드하면 Docker는 Dockerfile에 나열된 명령문을 차례대로 수행하며 DockerImage를 생성한다. Dockerfile을 읽을 줄 안다는 것은 해당 이미지가 어떻게 구성되어 있는지 알 수 있다는 의미이기도 하다. 도커 파일은 레이어 개념으로 실행 되기때문에 레이어 순서대로 작성해주는게 좋다. DockerFile 작성법 기본적으로 도커 파일의 파일명은 확장자 없이 Dockerfile 이다. FROM 베이스 이미지를 지정. 생성할 이미지의 베이스가 될 이미지를 의미한다. 로컬에 해당 이미지가 없는 경우 Docker Hub에서 가져..
Docker란? Docker는 컨테이너 기반의 오픈 소스 가상화 플랫폼으로, 애플리케이션 및 그에 따른 환경을 격리된 컨테이너에 패키징하여 개발, 배포, 실행을 쉽게 지원하는 툴이다. 먼저 Docker를 이해하기 위해서는 가상화에 대해서 이해가 필요하다. 가상화란? 하이퍼바이저를 이용해 여러개의 운영체제를 하나의 호스트에서 생성하는 방식이다. 하이퍼바이저 하이퍼바이저는 다음과 같은 역할을 수행한다. OS들에게 자원을 나누어 주며 조율 OS들의 커널을 번역해서 하드웨어에게 전달 위 그림을 보면 하나의 Host OS에서 여러 개의 서버 운영 체제(게스트 OS)가 생성되어 있는 것을 볼 수 있다. 이렇게 생성된 게스트 OS들은 가상 머신이라는 단위로 구별되고, 다른 게스트 OS와는 완전히 독립된 공간과 시스템..