분류 전체보기 145

이분탐색

탐색 범위를 줄여가며 탐색하는 방법. mid 값을 정해서 범위를 줄여나간다. 숫자 정해두고 맞추는 업다운게임과 비슷한 방법. 시간 복잡도는 연산 한 번으로 범위를 절반으로 줄이기 때문에 Log N 이분탐색 코드는 두 부분으로 나뉜다. 범위를 줄여나가는 부분 -> 이분 탐색 범위를 줄일 기준을 정하는 부분(ask 함수 : T/F 반환) -> 결정 문제 1번 부분에서는 left, right, mid값을 정해서 2번 부분이 리턴하는 값에 따라 left, right의 값을 조절해 범위를 줄여나간다. 예시로 백준의 나무 자르기 문제(https://www.acmicpc.net/problem/2805)를 풀어보면, 1번 부분 코드 (이분 탐색) while (left < right) { mid = (left + rig..

알고리즘/이론 2024.02.10

백준 2343 - 기타 레슨(C++)

문제 https://www.acmicpc.net/problem/2343 2343번: 기타 레슨 강토는 자신의 기타 강의 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 강의가 들어가는데, 블루레이를 녹화할 때, 강의의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경 www.acmicpc.net 풀이 이분탐색 문제이다. mid 값을 블루레이 중 최소값으로 두고 이분탐색을 수행한다. 문제에 주어진 예제로 예를 들면, 9 3 1 2 3 4 5 6 7 8 9 mid 16 17 18 구간 [1 2 3 4 5] [6 7] [8 9] 8+9 > 16 => cnt++ [1 2 3 4 5] [6 7] [8 9] [1 2 3 4 5] [6 7] [8 9] cnt 3 2 2 위와 같이 mid 값이 최소값 이..

17주차 - 젠킨스

기간 230828 - 230831 배운 내용 젠킨스 ◎ 젠킨스 1. 젠킨스란? CI/CD 도구로, 소프트웨어 개발 프로세스의 빌드, 테스트, 배포 등을 자동화하고 관리할 수 있게 함. 소스코드 만들었을 때, 수정했을 때 바로 빌드할 수 있는 환경까지 자동으로 해 줌. 2. 젠킨스 파이프라인 -> 자동화 위해 필요 젠킨스 파일 작성해서 지속적인 빌드와 배포를 할 수 있게 해 줌 코드형식으로 작성하는 것 * 선언적 파이프라인 - 어떤 상태를 원한다는 것을 작성해 두는 형태 * 스크립팅된 파이프라인 - 초기방식. 하나하나 명령어 실행되도록 작성 깃에서 파일 가져오고 빌드하고 테스트하고 배포하도록 작성 - 키워드 1. pipeline : 전체적인 작업 2. node : 빌드작업하는 대상 지정(agent : 어떤..

16주차 - 특강

기간 230821 - 230825 배운 내용 쿠버네티스, 특강 ◎ 쿠버네티스 1. 코딩테스트 - 큰 수 팩토리얼 구하기 fact { // --> 이렇게 하면 큰수는 구할수없음 res for i 4 2->5 이런 식으로 키와 값쌍을 가짐 abc->def 도 가능 메모리는 문자열을 주소값으로 가질 수가 없는데 어떻게 문자열-문자열이 매핑되나? => hash로 문자열을 정수형으로 바꿈 abc을 해싱해서 나온 정수값의 메모리에 "def"(값 문자열)을 매핑 ..

15주차 - 쿠버네티스, 특강

기간 230814 - 230818 배운 내용 쿠버네티스, 특강 ◎ 쿠버네티스 1. 트러블슈팅 : 문제의 원인 찾아 빠르게 다시 작동시킬 수 있도록 노력하는 것. - 트라이 앤 에러 : 하나씩 해보는 것. 시간 많이 걸림 1) 문제 식별하기 코딩된 부분만 볼 게 아니라 시스템 전반적 변화 확인해야 함(환경변수 바뀌거나 등등) 로그 확인해서 누가 어떤 작업 후에 동작 변했는지 확인해야 함. 2) 문서화 해결한 문제 어떻게 해결했는지 문서화 정상동작 위한 환경, 설정값 어떻게 구성했는지 등을 적고 공유 -> 다음에 문제 발생시 빨리 해결, 문제 또 생기지 않도록 방지 가능 3) 도구 - 로깅 - 로그 수준 2. 쿠버네티스에서 애플리케이션 트러블슈팅 파드의 수명주기 : 파드가 어떤 노드에서 실행가능한지 스케줄링..

14주차 - 쿠버네티스

기간 230807 - 230811 배운 내용 쿠버네티스 ◎ 쿠버네티스 1. 도커 / 도커 컴포즈 / 쿠버네티스 - 도커 : 컨테이너를 체계적으로 관리해 줌. 한번에 하나의 컨테이너만 관리 + 하나의 호스트에서만 동작 - 도커 컴포즈 : 도커와 하나의 호스트에서만 동작한다는 공통점 있지만, 한 번에 여러 개의 컨테이너를 일관적으로 관리해줌. 묶어서 관리할 때 유리함. => 하나의 호스트에서만 동작한다는 것이 공통적인 단점 - 쿠버네티스 : 여러 대의 호스트에서 컨테이너를 실행.(안정성) 한번에 여러 개의 컨테이너 일괄적으로 관리(확장성) 2. 쿠버네티스 아키텍처 1) 시스템 목적에 따른 분류 - 컨트롤 플레인(마스터) : 쿠버네티스 클러스터(하나의 목적을 가진 여러 대의 시스템 집합)를 전체적으로 운영(관..

13주차 - 리눅스, 도커

기간 230731 - 230804 배운 내용 리눅스, 도커 ◎ 리눅스 1. vagrant - vagrant 사용법 1) vagrantfile 작성 가상머신의 스펙 설정 2) 명령어로 관리(vagrantfile이 있는 위치에서 실행해야 함) vagrant up : 가상머신 생성/부팅 vagrant plugin install/uninstall/list : 플러그인 설치/삭제/확인 vagrant halt : 가상머신 종료 vagrant destroy : 가상머신 삭제 vagrant status : 가상머신 확인 vagrant ssh VMNAME : 가상머신에 원격접속 vagrant snapshot save/restore : 가상머신 스냅샷 관리 (가상머신 특정상태 저장) 2. 리눅스 명령어 ls : 파일목록,..

11주차 - AWS

기간 230717 - 230721 배운 내용 AWS ◎ AWS 서비스 리소스 ec2 ec2 instance IAM IAM user, Role, Policy, Group S3 S3 bucket vpc vpc Lambda Lambda function - 리소스 레벨 1) 글로벌 레벨 - IAM 관련 리소스 2) 리전 레벨 - VPC, S3, Lambda, DDB table 리전 레벨 : 가용영역까지 선택할 필요 없고, 리전까지만 선택하면 됨 S3, Lambda, DDB table 은 완전 관리형 3) 가용영역 레벨 - subnet, EC2 instance, RDS 1. AutoScaling AutoScaling = 트래픽에 따라 자동으로 서버가 늘어났다가 줄어들었다가 함 (오토스케일링 아니면 예상한 것에 따..

백준 1753 - 최단경로(C++)

문제 https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 풀이 다익스트라 알고리즘을 이용해서 푸는 문제. 나는 다익스트라를 우선순위 큐를 이용해서 풀었는데, 이 방법은 BFS와 유사하다. 주의할 점은 우선순위 큐를 만들 때, 비용을 기준으로 Min Heap 구조가 되도록 만들어야 한다는 것이다. priority_queue pq; 위와 같이 우선순위 큐를 생성하면 first 값을 기준으로 Min Heap으로 동작..

10주차 - Spring Boot, AWS

기간 230710 - 230714 배운 내용 Spring Boot, AWS ◎ Spring Boot Spring Boot는 의존성 세트라고 불리는 Starter 를 사용해 간편하게 의존성을 사용할 수 있다. 비즈니스 로직에만 집중할 수 있도록 만들어 주는 도구. 1. 특징 - Starter : 의존관계(dependency)를 간단하게 정의하는 모듈 - 빌드 도구 : 버전 해결 등 개발을 효율화하는 플러그인 (Maven, Gradle) - Config 클래스 : XML이 아닌 애너테이션과 자바로 설정 - 자동 구성 : 디폴트 구성이 적용되고, 필요한 부분만 설정 (항상 등록하는 것들 자동 구성) - Main Application 클래스 : 자바 명령으로 내장된 톰캣을 실행 - 설정 파일 2. Spring..