no image
AWS의 SecretsManager, Key Management Service(KMS)를 활용한 Secrets 관리
Key Management Service(KMS)암호화 키 생성 및 관리대칭키와 비대칭키 모두 생성 가능키의 생성, 교체, 비활성화, 삭제 등 전체 수명 주기 관리데이터 암호화/복호화AWS 서비스(S3, RDS)와 통합되어 데이터 암호화 지원애플리케이션에서 직접 KMS API를 호출하여 데이터 암호화/복호화 가능보안 기능IAM과 통합된 세밀한 접근 제어CloudTrail과 연동하여 키 사용 감사(audit) 로그 제공중앙 집중식 키 관리여러 AWS 리전과 계정에 걸쳐 키를 중앙에서 관리키 정책을 통한 세부적인 권한 제어| 요약 : 직접 암호화 키를 관리하지 않고 안전하게 데이터를 보호할 수 있게 해주는 서비스 (암호화/복호화 기능)SecretsManager민감정보(Secrets)를 저장하고 관리DB 자격..
2025.01.03
no image
백준 3085. 사탕 게임 문제풀이 자바 JAVA
문제 설명 문제 상근이는 어렸을 적에 "봄보니 (Bomboni)" 게임을 즐겨했다. 가장 처음에 N×N크기에 사탕을 채워 놓는다. 사탕의 색은 모두 같지 않을 수도 있다. 상근이는 사탕의 색이 다른 인접한 두 칸을 고른다. 그 다음 고른 칸에 들어있는 사탕을 서로 교환한다. 이제, 모두 같은 색으로 이루어져 있는 가장 긴 연속 부분(행 또는 열)을 고른 다음 그 사탕을 모두 먹는다. 사탕이 채워진 상태가 주어졌을 때, 상근이가 먹을 수 있는 사탕의 최대 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 보드의 크기 N이 주어진다. (3 ≤ N ≤ 50) 다음 N개 줄에는 보드에 채워져 있는 사탕의 색상이 주어진다. 빨간색은 C, 파란색은 P, 초록색은 Z, 노란색은 Y로 주어진다. 사탕의 색이 다른 ..
2024.03.06
no image
카카오 API 로그인 구현하기
스프링 부트를 활용한 카카오 API 로그인 구현 가이드기존 프로젝트에 카카오 로그인 API를 적용하여 회원가입 없이 로그인이 가능하도록 구현해보았습니다. 개발환경Spring Boot, Gradle, Java 11  OAuth란?OAuth의 이점OAuth(Open Authorization)는 사용자의 권한 부여를 위한 프로토콜로, 다른 애플리케이션이나 웹사이트에서 특정 리소스에 접근할 수 있도록 사용자의 동의를 얻는 데 사용됩니다. 이를 통해 보안성을 유지하면서 서비스 간에 사용자 정보를 공유할 수 있습니다.OAuth의 원리클라이언트 애플리케이션 등록: 클라이언트 애플리케이션을 등록하고 고유한 클라이언트 ID와 시크릿을 발급받습니다.인가 코드 요청 및 사용자 리다이렉션: 사용자가 로그인을 시도하면 클라이언..
2023.12.25
no image
이분탐색 결정 알고리즘 개념정리 및 예제 문제풀이 <마구간 정하기>
결정 알고리즘 이분 탐색을 기반으로 하여 이분탐색의 장점을 갖고 있습니다. 각 단계에서 탐색의 범위를 반으로 줄이기 때문에 빠른 속도를 보입니다. 시간 복잡도는 O(log n)입니다. 특징 정렬된 데이터에서만 사용할 수 있습니다. 때문에 데이터를 정렬하는 추가적인 비용이 발생할 수 있으며, 정렬된 상태를 유지해야 합니다. 위의 특성때문에 주로 정적인 데이터에 사용됩니다. 정적인 데이터가 아닌 동적인 데이터에 대해 탐색한다면, 매번 데이터를 재정렬 해야 합니다. 분할 정복(divide and conquer) 전략을 따릅니다. 주어진 하나의 문제를 작은 여러 문제로 나누어 해결하고, 그 결과를 합쳐 전체 문제를 해결합니다. 예제 문제 설명 N개의 마구간이 수직선상에 있습니다. 각 마구간은 x1, x2, x3..
2023.12.14
no image
백준 14503. 로봇 청소기 문제풀이 자바 JAVA
문제 설명 문제 로봇 청소기와 방의 상태가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 방은 N X M 크기의 직사각형으로 나타낼 수 있으며, 1 X 1 크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 벽 또는 빈칸이다. 청소기는 바라보는 방향이 있으며, 이 방향은 동, 서, 남, 북 중 하나이다. 방의 각 칸은 좌표 (r, c)로 나타낼 수 있고, 가장 북쪽 줄의 가장 서쪽 칸의 좌표가 (0, 0), 가장 남쪽 줄의 가장 동쪽 칸의 좌표가 (N-1, M-1)이다. 즉, 좌표 (r, c)는 북쪽에서 (r+1) 번째에 있는 줄의 서쪽에서 (c+1) 번째 칸을 가리킨다. 처음에 빈칸은 전부 청소되지 않은 상태이다. 로봇 청소기는 다음과 같이 작동한다. 현재 칸이..
2023.12.13
no image
백준 9205. 맥주 마시면서 걸어가기 문제풀이 자바 JAVA
문제 설명 문제 송도에 사는 상근이와 친구들은 송도에서 열리는 펜타포트 락 페스티벌에 가려고 한다. 올해는 맥주를 마시면서 걸어가기로 했다. 출발은 상근이네 집에서 하고, 맥주 한 박스를 들고 출발한다. 맥주 한 박스에는 맥주가 20개 들어있다. 목이 마르면 안되기 때문에 50미터에 한 병씩 마시려고 한다. 즉, 50미터를 가려면 그 직전에 맥주 한 병을 마셔야 한다. 상근이의 집에서 페스티벌이 열리는 곳은 매우 먼 거리이다. 따라서, 맥주를 더 구매해야 할 수도 있다. 미리 인터넷으로 조사를 해보니 다행히도 맥주를 파는 편의점이 있다. 편의점에 들렸을 때, 빈 병은 버리고 새 맥주 병을 살 수 있다. 하지만, 박스에 들어있는 맥주는 20병을 넘을 수 없다. 편의점을 나선 직후에도 50미터를 가기 전에 ..
2023.12.07
no image
백준 2573. 빙산 문제풀이 자바 JAVA
문제 설명 문제 지구 온난화로 인하여 북극의 빙산이 녹고 있다. 빙산을 그림 1과 같이 2차원 배열에 표시한다고 하자. 빙산의 각 부분별 높이 정보는 배열의 각 칸에 양의 정수로 저장된다. 빙산 이외의 바다에 해당되는 칸에는 0이 저장된다. 그림 1에서 빈칸은 모두 0으로 채워져 있다고 생각한다. 빙산의 높이는 바닷물에 많이 접해있는 부분에서 더 빨리 줄어들기 때문에, 배열에서 빙산의 각 부분에 해당되는 칸에 있는 높이는 일 년마다 그 칸에 동서남북 네 방향으로 붙어있는 0이 저장된 칸의 개수만큼 줄어든다. 단, 각 칸에 저장된 높이는 0보다 더 줄어들지 않는다. 바닷물은 호수처럼 빙산에 둘러싸여 있을 수도 있다. 따라서 그림 1의 빙산은 일 년 후에 그림 2와 같이 변형된다. 그림 3은 그림 1의 빙산..
2023.12.07
no image
백준 7569. 토마토 문제풀이 자바 JAVA
문제 설명 문제 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자모양 상자의 칸에 하나씩 넣은 다음, 상자들을 수직으로 쌓아 올려서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토에 인접한 곳은 위, 아래, 왼쪽, 오른쪽, 앞, 뒤 여섯 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로 익는 경우는 없다고 가정한다. 철수는 창고에 보관된 토마토들이 며칠이 지나면 다 익게 되는지 그 최소 일수를 알..
2023.12.07
no image
백준 2468. 안전 영역 문제풀이 자바 (JAVA)
문제 설명 문제 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 안전한 영역이 최대로 몇 개가 만들어 지는 지를 조사하려고 한다. 이때, 문제를 간단하게 하기 위하여, 장마철에 내리는 비의 양에 따라 일정한 높이 이하의 모든 지점은 물에 잠긴다고 가정한다. 어떤 지역의 높이 정보는 행과 열의 크기가 각각 N인 2차원 배열 형태로 주어지며 배열의 각 원소는 해당 지점의 높이를 표시하는 자연수이다. 예를 들어, 다음은 N=5인 지역의 높이 정보이다. 이제 위와 같은 지역에 많은 비가 내려서 높이가 4 이하인 모든 지점이 물에 잠겼다고 하자. 이 경우에 물에 잠기는 지점을..
2023.12.07