전체 글 649

[PS] BOJ2493 탑 ( Stack ) with JAVA

2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net ◎ 문제해결 스택을 이용하면 쉽게 풀리는 문제이다. 스택을 처음에 발상했지만 시간복잡도에 걸릴 것이라 판단했었다. 그런데 다시 생각해보니 그렇지 않았다. 6 9 5 7 4 왼쪽부터 하나씩 포인터를 이동하면서 Stack의 Top과 비교한다. Top이 작으면 POP한다. 스택에 더이상 값이 없으면 0을 출력하고 Top에 자신보다 크거나 같은 수가 있으면 출력한다. 그리고 자신의 인덱스를 스택에 PUSH 한다. 스택에는 포인터 이전의 수가 모두 들어가 있지 않고 P..

[AWS] EKS에서 OIDC가 적용되는 원리

OIDC란 Open ID Connect의 약자이다. OIDC는 OAuth 2.0 프로토콜을 기반으로 이루어지는 사용자 인증 방식을 의미한다. AWS에서 사용자란 IAM을 의미한다. IAM은 AWS 리소스에 대한 권한을 가지고 있다. 그러나 IAM 사용자는 리소스 권한을 유용하게 사용하지 못한다. IAM 사용자가 복잡한 EKS 클러스터를 직접 구성할 수 있을까? 못한다. 그러므로 IAM 사용자는 복잡한 작업을 대신해줄 APP을 찾아 권한을 양도하는 방식을 선택해야 한다. IAM 사용자는 Terraform과 같은 IaC에서 제공하는 Provider에게 AccessKey와 SecretKey를 제공하여 권한을 양도하고 EKS 환경을 대신 구성하도록 지시한다. 하지만 AccessKey와 SecretKey를 직접 ..

DevOps/AWS 2023.11.14

[BOJ] BOJ16234 인구이동 ( BFS ) with JAVA

16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net ◎ 문제풀이 문제 이해력과 구현력이 필요한 문제였다. 접근이 가능한 인접지역을 탐색하는 문제이므로 DFS와 BFS가 떠올랐다. DFS는 깊이우선탐색으로 깊이를 먼저 파다보면 접근하지 않아도 되는 경우의 수도 접근할 수 있다. DFS와 BFS 결국 모두 동일한 지역을 접근하므로 접근가능한 경우의 수를 줄이기 위해 BFS로 탐색한다. 그럼 며칠을 인구이동해야 인구이동이 필요없는지 구해보자. 인구차이가 20(L)보다 크거나 같고 90(R)보다 작거나 같아..

[AWS] EKS에 ALB Ingress Controller 설치하기

AWS Load Balancer Controller 추가 기능 설치 - Amazon EKS 배포된 차트는 보안 업데이트를 자동으로 수신하지 않습니다. 새 차트가 사용 가능해지면 수동으로 업그레이드해야 합니다. 업그레이드 시 이전 명령에서 install을 upgrade로 변경하되, 이전 명령 docs.aws.amazon.com 위 공식문서를 참고하여 ALB Ingress Controller를 EKS에 설치해보겠다. 해당 실습은 AWS EKS 클러스터가 구성되어 있다고 가정하겠다. 0. EC2 인스턴스(우분투 리눅스)에 kubectl 서버 구성하기 EKS에 ALB Ingress Controller를 생성하려면 EKS에 명령을 내릴 서버를 만들어야 한다. EC2 인스턴스를 우분투 리눅스 환경으로 생성하고 아래..

DevOps/AWS 2023.11.08

BOJ20437 문자열 게임2 ( String ) with JAVA

20437번: 문자열 게임 2 첫 번째 문자열에서 3번에서 구한 문자열은 aqua, 4번에서 구한 문자열은 raquator이다. 두 번째 문자열에서는 어떤 문자가 5개 포함된 문자열을 찾을 수 없으므로 -1을 출력한다. www.acmicpc.net ◎ 문제풀이 문자열 안의 부분문자열 중에서 특정 문자로 시작해서 끝나는 문자열 중 해당 문자가 K개 있는 경우의 최소길이와 최대길이를 구하는 문제이다. 문자열 안의 특정문자 K개를 찾아야 하므로 반복문이 중첩될 수 밖에 없는데, 문자열의 길이는 최대 10,000이다. 그러므로 시간초과가 발생하지 않도록, 가지치기를 할 필요가 있다. 1. 문자열 내 알파벳 별 개수 파악하기 알파벳 개수를 파악하여 K개보다 작으면 반복을 하지 않는다. 2. 문자열 탐색 문자열 앞..

문제풀이/String 2023.11.07

[Jenkins] SSH로 AWS EC2 원격접속하여 Tomcat Server 배포하기

Jenkins를 사용하여 AWS EC2에 원격접속하여 Tomcat Server를 배포하려고 한다. 이번 포스팅은 로컬환경에 도커환경에 구성되어 있고 AWS EC2가 생성되어 로컬환경에서 SSH 원격접속이 가능하다는 가정 하에 진행해보겠다. 1. 로컬환경 Docker 컨테이너에 Jenkins 띄우기 docker run -d -p 8080:8080 --name jenkins -u root jenkins/jenkins:lts localhost:8080 Jenkins를 도커 컨테이너에 띄우고 localhost:8080으로 접속하면 초기패스워드 작성화면이 나온다. docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword docker exec 명..

DevOps/JENKINS 2023.11.03

[Terraform] Terraform으로 간단한 AWS 아키텍처 구현하기

Terraform으로 위 AWS 아키텍처를 구현해보려고 한다. GitHub - mgKang3646/Terraform_Apache Contribute to mgKang3646/Terraform_Apache development by creating an account on GitHub. github.com ( 아래에 사용된 코드는 Git Hub에서 참조 가능합니다. ) 1. Terraform 설치 Install Terraform | Terraform | HashiCorp Developer Install Terraform on Mac, Linux, or Windows by downloading the binary or using a package manager (Homebrew or Chocolatey). ..

DevOps/Terraform 2023.11.02

[AWS] VPC와 Subnet 이해하기 ( + CIDR )

VPC( Virtual Private Cloud ) VPC란 Virtual Private Cloud로 가상으로 격리된 네트워크 환경을 의미한다. 서울이라는 Region안에 여러 개의 Availability Zone이 나누어져 있다. Availability Zone은 논리적인 데이터센터를 의미하는데, 하나의 데이터센터에 문제가 생기면 다른 데이터센터에 접근이 가능하여 안정적인 운영이 가능해진다. Availability Zone은 분리되어 있지만 하나의 네트워크 환경으로 묶여야 한다. 그래서 가상으로 격리된 네트워크 환경을 만드는데, 그것이 VPC(Virtual Private Cloud)이다. VPC의 cidr은 10.10.0.0/16이다. 이는 서브넷 마스크 11111111 11111111 00000000..

DevOps/AWS 2023.11.02

[PS] BOJ20055 컨베이어 벨트 위의 로봇 ( inplementation ) with JAVA

20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net ◎ 문제풀이 문제이해력과 구현력이 필요한 문제였다. 자료구조는 2개를 만들어 준다. 1) 컨베이어 벨트 ( int 배열 , 내구도 ) 2) 로봇위치 ( boolean 배열, 로봇 존재 여부 ) 문제에 주어진 단계에 따라 차근히 구현하면 된다. 1) 벨트 이동하기 벨트가 한 칸 움직일때마다, 우측으로 값을 복사한다. 맨끝은 가장 처음으로 복사한다. 벨트 자료구조를 우측으로 값을 복사하였다. 벨트 위에 있는 로봇도 함께 우측으로 이동한다. 2) ..

[PS] BOJ12919 A와B 2 ( String, DFS ) with JAVA

12919번: A와 B 2 수빈이는 A와 B로만 이루어진 영어 단어 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수빈 www.acmicpc.net ◎ 문제풀이 문제를 보고 DFS 알고리즘을 잘 떠올렸으나 시간초과가 발생하였다. Source를 Target으로 만들기 위해 DFS로 모든 경우를 탐색하였다. 문제를 풀면서도 시간초과를 예상하기는 했다. Source 끝에 A를 추가하거나 Source 끝에 B를 추가하거 뒤집어야 한다. Source와 Target의 길이 차이만큼 경우의 수는 2ⁿ 으로 늘어난다. Target의 최대길이가 50이므로 경우의 수는 2의 49승까지 ..

문제풀이/String 2023.10.20