Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 수 있습니다. 1 + 2 + 3 + 4 + 5 = 15 4 + 5 + 6 = 15 7 + 8 = 15 15 = 15 자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해주세요. 제한사항 n은 10,000 이하의 자연수 입니다. 입출력 예 nresult 15 4 연속된 수이므로 전형적인 투 포인터 문제 start와 end를 정해두고 1 > +2 +3 +4 하다가 기준점 n보다 같으면 count++, n보다 크면 start를 ++시킵니다. 2..
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다. '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요. 제한사항 문자열 s의 길이 : 100,000 이하의 자연수 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다. 입출력 예 sanswer "()()" true "(())()" true ")()(" false 스택으로 풀 수 있는 문제인데 왜 예전에 문자열로..
길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱한 값을 누적하여 더합니다. 이때 최종적으로 누적된 값이 최소가 되도록 만드는 것이 목표입니다. (단, 각 배열에서 k번째 숫자를 뽑았다면 다음에 k번째 숫자는 다시 뽑을 수 없습니다.) 예를 들어 A = [1, 4, 2] , B = [5, 4, 4] 라면 A에서 첫번째 숫자인 1, B에서 첫번째 숫자인 5를 뽑아 곱하여 더합니다. (누적된 값 : 0 + 5(1x5) = 5) A에서 두번째 숫자인 4, B에서 세번째 숫자인 4를 뽑아 곱하여 더합니다. (누적된 값 : 5 + 16(4x4) = 21) A에서 ..
문제 설명 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다. 제한 조건 s에는 둘 이상의 정수가 공백으로 구분되어 있습니다. 입출력 예 "1 2 3 4" "1 4" "-1 -2 -3 -4" "-4 -1" "-1 -1" "-1 -1" 음수가 포함되어 있고 숫자가 한 자리 수가 아니기 때문에 공백으로 구분해야 하는 문제입니다. 띄어쓰기가 있으면 그 전 문자열을 숫자로 변환해서 비교하도록 해서 풀었는데, 그냥 String s를 split 메소..
예전에 출퇴근시 회사 포탈 로그인/로그아웃해서 출퇴근 찍는걸 자주 깜박해서 컴퓨터가 켜져 있으면 9시 전에 자동으로 로그인해서 출근 찍고, 6시 이후에 자동으로 로그아웃해서 퇴근 찍는 파이썬 프로그램을 개발했었습니다. https://github.com/choisaelim/attendcheck 오늘의 브리핑도 기본 내용은 단순한, 순전히 편의를 위해 생각했던 서비스입니다. 기본기능은 사용자 정보와 출퇴근 위치를 저장해놓고, 기상청 API를 이용해 출근지와 퇴근지의 출근시간, 퇴근시간 날씨를 표시하는 기능입니다. 웹 화면이니까 UI 용도로 카카오맵 API로 지도에 출근, 퇴근지 좌표도 찍었습니다. 아침에 일어나면 늘 있는 출퇴근길이 어떤지 미리 볼 수 있었으면 해서 만들었는데, 카카오 API에 대중교통 루트..
MSA 구축 강의를 토대로 로컬에 MSA 환경을 구성해보았습니다. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4 1. 서비스 디스커버리 - 유레카 서버 구축 2. 게이트웨이 - 스프링 클라우드 게이트웨이 적용 3. 기능 구현 - 유저 서비스, 카탈로그, 오더 서비스 4. 유저 JWT 토큰 발급 및 로그인, 회원가입 기능 5. 설정 서버 - 스프링 클라우드 콘피그 연동 등의 순서로 실습해봤는데, 스프링 시큐리티는 버전이 올라가면서 (스프링 부트 버전 2.7.8) dep..
사이드 프로젝트 기본 기능은 됐다 싶은 와중에 한글을 넣었더니 데이터가 깨지기 시작했습니다. ???로 깨지는 것도 아니고 꿣뚫뀂 같은 오류 디비 툴은 dbeaver, RDBMS는 mysql, IDE는 vs코드를 쓰고 있었기 때문에 바로 한글 인코딩 관련 부분을 다 고치기 시작했습니다. 1. Dbeaver 툴의 dbeaver.ini 수정(-Dfile.encoding=UTF-8 한 줄 추가) 2. ProgramData > mysql > my.ini에 인코딩 설정 추가 [client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci init-connect='SET NAM..
젠킨스로 돌아가서, EC2에 ssh-keygen을 통해 키 파일을 추가로 만들고(이번엔 이름을 지정해서 id_rsa와 겹치지 않게 합니다) ssh-keygen -t rsa -f /home/ubuntu/.ssh/k8smanifest 쿠버네티스 배포를 위한 manifest 파일이 있는 github credential을 등록합니다. git repository deploy_keys에도 공개키를 등록해줍니다. git 연결 코드를 생성한 credentialId와 함께 작성합니다. sh 명령어를 통해 현재 빌드 번호를 태그로 하여 deployment.yaml을 변경하고 커밋하는 git code를 작성합니다. (spring은 이미지네임의 일부임으로 본인의 도커 이미지 이름으로 변경합니다) 해당 코드가 실행되고 Argo..
ArgoCD 공식 문서 https://argo-cd.readthedocs.io/en/stable/getting_started/ kubectl과 kube config 파일이 필요합니다. kops로 쿠버네티스를 구성했다면 설치 조건에 부합합니다. 쿠버네티스 마스터 노드에 접속합니다. kops에서 퍼블릭 키를 설정해놓고 putty에서 key pair시 받아둔 ppk 파일을 이용해 접속해도 되고, (접속 정보는 AWS 콘솔에서 확인 가능합니다) 키 파일로 접속하는게 아니라면 EC2 instance connect를 이용해서 접속 후, sudo passwd root sudo passwd ubuntu 로 패스워드 지정 한 후 sudo vi /etc/ssh/sshd_config - PasswordAuthenticati..
새 프로젝트 등록 젠킨스 메인에서 New Item을 누르고 아이템 이름을 넣어 Pipeline을 선택합니다. General에서 Github project url 입력 저는 공개 리포지토리라서 https 주소로 입력했지만 비공개라면 등록한 SSH 정보를 이용하기 위해 SSH 주소를 입력합니다. build trigger에서 깃 푸시 할 때 파이프라인이 실행되도록 설정할 수 있습니다. (플러그인 설치하면 나타남) 해당 설정을 사용하려면 Github에서 리포지토리 > Webhook에 들어가서, 젠킨스 주소 + /github_webhook 주소 등록 및 push에 체크해줍니다. Github Repository에 배포할 소스가 있어야 하는데, 저는 Spring Boot Initializer로 Java11 + 그래들..