분류 전체보기
숨바꼭질4
숨바꼭질4
2020.11.07문제유형 BFS, 단순구현 문제풀이 모듈 2가지 1. BFS -. x+1, x-1, x*2 방문체크 -. 방문하지 않았다면 큐에 대입 -. 역추적을 위해 from[now] = next 형태로 저장, 재귀함수를 통해 마지막에 추적하기 위함 e.g) 1->2->3->4 면 from[4] = 3, from[3] = 2, from[2] =1 이런식 2. 역추적 -. 재귀함수로 역추적 코드 package backjun; import java.io.*; import java.util.*; public class BOJ_13913_숨바꼭질4 { static void print(int n, int m, int[] from) { if(n!=m) { print(n, from[m], from); } System.out.pr..
특정거리의 도시찾기
특정거리의 도시찾기
2020.11.07이 문제는 최단거리를 찾아내는 과정을 BFS알고리즘을 통해 해결할 수 있습니다. 알고리즘 개략적인 부분은 아래와 같습니다. pq에 시작위치와 depth를 저장 ans를 위한 pq선언 BFS depth가 우리가 찾는 depth라면 ans 에 node번호를 넣기(2의 pq에서 첫번째 요소) 그리고 continue 그게 아니라면 2의 pq 전체를 돌면서 현재 node의 사이즈만큼 돈다. next를 선언 방문하지 않았다면 방문체크해주고 pq에 넣어준다. next, cost+1 로 ans 의 사이즈가 0 이면 -1 그렇지않으면 ans 가 empty가 아닐때까지 poll 해서 정답을 유추한다. package programmers; import java.util.*; import java.io.*; public cl..
멀쩡한사각형
멀쩡한사각형
2020.11.07import java.util.*; import java.math.*; class Solution { public long solution(int w, int h) { int gcd = BigInteger.valueOf(w).gcd(BigInteger.valueOf(h)).intValue(); return ((long)w*(long)h)-(((long)(w/gcd)+(long)(h/gcd-1)))*gcd; } }
BOJ :: 1182(부분 수열의 합)
BOJ :: 1182(부분 수열의 합)
2020.10.261 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 package backjun; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; import java.util.*; public class BOJ_1182_부분수열의합_백트래킹 { static int aim=0; static int[] arr; static int answer = 0; public stat..
마이크로서비스 배포
마이크로서비스 배포
2020.10.11-. 개발자가 운영 팀에게 코드를 일일이 넘겨주었던 수작업 과정은 고도로 자동화되고 물리적인 프로덕션 환경은 가볍고 일시적인 컴퓨팅 인프라로 대체되었습니다. -. AWS EC2 ⇢ 도커 릴리스 ⇢ AWS 람다 도입-. 운영 환경에 사용되는 컴퓨팅 리소스 역시 물리 머신을 추상한 개념이 등장하면서 많은 변화를 겪게 되었고, AWS 등 고도로 자동화한 클라우드에 기반해 가상 머신은 수명이 긴 물리/가상 머신으로 빠르게 대체되었습니다. -. 현대에 이르러서 가상 머신은 불변 = Immutable 합니다. 재구성 = reconfiguration 하기보다 폐기 후 재생성 합니다. -. 배포 프로세스/아키텍처가 발전을 거듭한 것은 마이크로서비스 아키텍처가 점점 더 많이 채택되는 이유 입니다.-.프로덕션 환경의 4대..
마이크로 서비스 패턴
마이크로 서비스 패턴
2020.10.101) X축 확장 :: 다중 인스턴스에 고루 요청 분산 일반적인 모놀리식 애플리케이션 확장 수단, 부하 분산기 뒷면에 애플리케이션 인스턴스 N개를 띄워 놓고 부하 분산기는 들어온 요청을 인스턴스에 고루 분배합니다. 애플리케이션 능력과 가용성을 개선할 수 있습니다. 2) Y축 확장 :: 요청 속성별 라우팅 인스턴스 앞면에 위치한 라우터는 요청의 속성에 알맞은 인스턴스로 요청을 라우팅 합니다. 애플리케이션을 확장해서 증가하는 트랜잭션 및 데이터 볼륨을 처리하기 좋습니다. 3) Z축 확장 :: 기능에 따라 애플리케이션을 서비스로 분해 위 과정을 거치면 X축/Z축 확장을 하면 애플리케이션 능력과 가용성 개선, 애플리케이션이 복잡해지면 문제는 해결되지 않는다. 모놀리식 애플리케이션을 여러 서비스로 쪼갠다. Y축 확..
프로그래머스 : JOIN
프로그래머스 : JOIN
2020.10.07https://programmers.co.kr/learn/courses/30/lessons/59042 이 문제는 입양을 간 기록은 있는데 보호소에 들어온 기록이 없는 동물의 ID 와 이름을 ID순으로 조회하는 SQL문을 작성하는것입니다. 어떻게 풀어야 할까...! 우선 테이블을 보면 ANIMAL_INS의 역할은 동물 보호소에 들어온 동물의 정보를 담는다. 반면에 ANIMAL_OUTS는 동물 보호소에 입양 보낸 동물의 정보를 담습니다. right join 즉, 오른쪽 테이블(ANIMAL_OUTS) 를 기준으로해서 무조건 ANIMAL_OUTS는 모두 보이는 형태가 됩니다. 그리고 ANIMAL_ID 값이 서로 같은 것을 기준으로 왼쪽 테이블(ANIMAL_INS)의 값을 불러오는데 '보호소에 들어온 기록이 없다..
GCP41 :: 구글 클라우드 플랫폼 입문
GCP41 :: 구글 클라우드 플랫폼 입문
2020.10.07프로젝트는 테넌트 라고 불리는 개념에 해당하는 것입니다. 해당 프로젝트에 등록된 사용자 계정만이 프로젝트 안의 리소스를 조작할 수 있게 됩니다. 레거시 네트워크는 모든 지역에 걸쳐서 하나의 서브넷이 구성됩니다. 반면에 서브넷 네트워크는 지역마다 개별 서브넷이 존재합니다. gcloud 명령어는 GCP의 각 서비스를 관리하는 도구 입니다. gcloud 명령의 릴리즈 레벨에는 다음이 있습니다. General Availability, 라벨 x, 안정 버전 실제 운용 용도로 사용가능 Beta, 라벨 beta, 동작하지만 해결되지 않은 문제가 포함되어 있을 가능성이 있는 명령. 서비스 레벨 계약 대상에서 제외 Alpha, 라벨 alpha, 알파 버전 릴리즈 명령으로 예고없이 변경될 수 있음 SLA대상에서 제외 Pr..
GCP40 :: 베스천호스트 연결
GCP40 :: 베스천호스트 연결
2020.10.02구글문서에 따르면 베스천 호스트를 통해 내부 아이피 만으로 외부아이피 없이 접속할 수 있습니다. 이 방식의 장점은 따로 방화벽 규칙을 설정하지 않고도 개발 환경에 연결하거나 외부 애플리케이션의 데이터베이스 인스턴스를 관리할 수 있습니다. 우선적으로 베스천 호스트에 로그인한 후에 대상 비공개 인스턴스에 접근하여 로그인하게 됩니다. 이러한 베스천 호스트를 점프 서버라고도 부릅니다. 다음 2단계를 거쳐서 로그인을 수행합니다. 1) OS로그인 사용 설정합니다. gcloud compute instances add-metadata test --metadata enable-oslogin=TRUE 여기서 test 인스턴스에 oslogin 을 TRUE 로 주었습니다. 또, test 인스턴스에 rw 권한을 부여해야 합니다..
IT10 :: 프로젝트 유지보수
IT10 :: 프로젝트 유지보수
2020.10.02추석 연휴가 얼마 안남은 상황에서 이전에 했던 프로젝트 유지보수 포스팅을 수행합니다. 이 포스팅의 목적은 나름대로 메모의 역할과 그리고 프리워밍을 시간을 줄이기 위함입니다. 일부 내용이 도움이 되셨으면 바라는 마음도 있습니다. ㅡ. 백엔드 백엔드에서는 Spring boot 를 사용했습니다. 전체적으로는 MVC 패턴을 사용해서 백엔드를 설정하였습니다. 인터페이스와 클래스를 나누지 않은 이유는 없는데 하나로 패키지에 묶어서 관리하는게 편해서 위와 같이 관리하였습니다. spring boot의 시작을 위해서 springapplication.run을 동작시킵니다. run 메소드에는 @EnableAutoConfiguration으로 어노테이션된 클래스를 넘겨줍니다. @SpringBootApplication으로 어노테..
GCP39 :: Media(번역) - BigQuery
GCP39 :: Media(번역) - BigQuery
2020.10.02ㅡ. 스탠다드SQL 빅쿼리는 2011 표준화된 안시 SQL 에 따르는 Standard SQL을 더 선호합니다. 빅쿼리를 사용할때 자동적으로 생성하고 스케쥴해주고 쿼리잡을 실행해줍니다. 빅쿼리는 두가지 모드로 실행됩니다. :: interactive, batch Interactive(on-demand) : 가능한한 많이 실행됩니다. 제한이 따릅니다. Batch queries : 빅쿼리 공유 리소스 풀에서 유후 자원을 사용할 수 있도록 즉시 배치 쿼리가 대기열에 저장되고 시작됩니다. 단 몇분만에 실행됩니다. interactive 모드와 다르게 동시 요금 제한에 따른 제약이 없습니다. ㅡ. 빅쿼리 테이블 타입 모든 비구커리 테이블은 컬럼 네임을 가지고 있는 스키마 형태로 정의도비니다. 컬럼 네임에는 데이터 타입..
알고리즘108 :: 구간합 (JAVA)
알고리즘108 :: 구간합 (JAVA)
2020.09.30구간의 합을 빠르게 구하고자 할때 Priefix sum을 미리 구해서 답을 도출해냅니다. 누적합이 특정배열에 담기는것으로 상수시간안에 답을 도출해낼 수 있습니다. 10, 20, 30, 40, 50 인 경우 10, 30, 60, 100, 150 으로 누적합 테이블을 생성할 수 있습니다. 이때 left가 1이고 rightrk 3인 구간의 합을 구하는 문제가 주어질 경우 간딴하게 Array[3] - Array[1-1] 의 값으로 답을 결정할 수 있습니다. (식 Array[right] - Array[Left-1]) package test; import java.util.*; public class 구간합알고리즘 { public static void main(String[] args) { // TODO Auto-..