전자 도서관 이용하여 해당 도서를 읽고 포스팅 합니다 *무료 전자도서관 이용 후기https://dev-ljw1126.tistory.com/395 무료 전자 도서관 이용 후기 (with 교보문고 전자 도서관 앱)최근에 알게 된 전자 도서관 이용 후기 대해 포스팅합니다 개인적으로 읽고 싶은 책이 있을 때 매번 서점에 방문하여 도서 구매하거나, 알라딘 ebook과 같은 전자책을 구매해 왔습니다 규모가 큰dev-ljw1126.tistory.com *도서 구매 링크 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=90620424 만화로 배우는 리눅스 시스템 관리 1만화로 배우는 리눅스 서버 관리와 셸 스크립트. 시스템 관리 부서 신입 사원 리나 민트. 선배 사원 오노 ..
문제 링크https://www.acmicpc.net/problem/1339 풀이- 완전 탐색 + 비트마스킹, 그리디 풀이- 각 알파벳을 0 ~ 9 숫자로 중복 없이 치환하여서 최대값을 구하는 문제 (같은 알파벳은 같은 숫자로 바껴야 하고, 중복 숫자x) 처음 완전 탐색 + 비트 마스킹으로 풀이했다. 그런데 공간복잡도와 시간복잡도가 너무 높이 나왔다.그래서 그리디 풀이 방법을 고민했는데, 아이디어가 전혀 떠오르지 않아 블로그를 참고하여 풀이했다 1) 완전 탐색 + 비트 마스킹- 중복을 제외한 알파벳을 구한다 - 알파벳별로 9~0 사이의 숫자를 할당하면서 완전 탐색을 수행한다- 이때 숫자 사용여부를 비트 마스킹 기법을 사용하였다 ( 9 ~ 0 자리의 비트를 표현하면 되므로 int 로 충분)- idx 가 알..
문제 링크 https://www.acmicpc.net/problem/10597 풀이- 백트래킹 사용- 정답은 구했으나 boolean[] visited 배열을 사용하는 것과 최대 수가 50인걸 파악하지 못한 풀이로 시간 초과 발생- 잘못 풀이한 부분에 대한 이력 남김 문제 설명과 같이 1 ~ N까지의 숫자로 이루어진 순열을 구해야한다- N = 10인 경우 1 부터 10 까지의 수가 중복 없이 모두 포함되어 있어야 한다는 의미- "kriii의 순열은 최소 1개 최대 50개의 수로 이루어져 있다."에서 (러프하게)최대 수가 50까지 라는 것을 파악할 수 있다- 연산을 편하게 하기 위해서 int[] nums 배열을 선언 후 숫자 초기화를 수행하였다 백트래킹 수행할 함수를 아래와 같이 선언하였다(idx >= 배열..
문제 링크https://www.acmicpc.net/problem/2661 풀이- 백트래킹 사용- 임의의 길이의 인접한 두 개의 부분 수열이 동일한 것이 있으면, 그 수열을 나쁜 수열이라고 부른다. 그렇지 않은 수열은 좋은 수열이다- 인접한 두 개의 부분 수열이 서로 다르면서 좋은 수열 중 가장 작은 값을 찾는다 ①재귀를 호출할 때 항상 1 ~ 3을 순차적으로 순회하기 때문에 처음 종료 조건(길이가 N인)에 부합하는 값이 최소값임이 보장된다for(int i = 1; i *좋은 수열이기 위한 유효성 검사 관련하여 ② 이전 값(prev)를 재귀 호출시 파라미터로 전달하고 for문에서 다음으로 연결할 값과 같은 경우(prev == i) continue③ 이전 값(prev)과 다른 경우 해당 숫자를 문자열..
문제 링크 https://www.acmicpc.net/problem/2580 풀이- 백트래킹, 비트 마스킹으로 문제 해결 문제를 한번만 읽고 풀다가 유효성 검사에서 3 * 3 그리드를 누락하여 "틀렸습니다"를 맛 보았다..🥹스도쿠의 필드가 0인 영역을 채울 때 유효성 검사를 총 3가지를 수행해야 했다 ① 행② 열③ 3 * 3 그리드 영역 rows, cols, boxes 각 배열을 사용하여 비트 마스킹을 표현하고, 유효성 검사를 하도록 하였다private static long[] rows;private static long[] cols;private static long[] boxes; 입력 데이터 초기화시 값이 0인 경우 리스트에 좌표 정보를 담고, 나머지의 경우 비트 마스킹 표기를 할 수 있도록 ..
도서 학습 정보 및 자료① 구매 시기 : 2021-04-22② 학습 기간 : 2024-12-23 ~ 2025-01-09 (3주)③ 문제 개수 : 69개 (기본 예제 제외, 심화 문제 21개 + 기출문제 48개) 1. 도서 구매https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=247882118&start=slayer 이것이 취업을 위한 코딩 테스트다 with 파이썬IT 취준생이라면 누구나 가고 싶어 하는 카카오, 라인, 삼성전자의 2016년부터 2020년까지의 코딩 테스트와 알고리즘 대회의 기출문제를 엄선하여 수록하였다. 최근 5년간의 코딩 테스트 기출문제www.aladin.co.kr 2. 깃허브 저장소https://github.com/ndb796/python-f..
문제 링크https://www.acmicpc.net/problem/19237 풀이개인적으로 상어 시리즈 문제 중에서 쉬운 편이었다고 생각한다구현 요구사항이 복잡해서 이해하는 수고가 필요할 뿐이지 반복문만으로 풀이 가능하였다 처음에 이해가 어려웠던게 아래의 상어의 방향별 우선순위 표였다문제에서 1, 2, 3, 4는 각각 위, 아래, 왼쪽, 오른쪽을 의미할 때①번 상어는 처음 오른쪽 방향을 바라보기 때문에 이동 가능한 위치를 탐색할 때 → ← ↑ ↓ 순으로 "빈칸" 또는 "자기 냄새나는 영역"을 찾는다 입출력 예시도 상어의 방향별 우선순위 때문에 처음에 알아보기 쉽지 않았지만, 두번 풀이하니 적응이 된다 입출력 예시 1에서5 4 4 // n m k (n : n * n, m : 상어 마리 수..
문제 링크 https://www.acmicpc.net/problem/19236 풀이백트래킹이 약한 나에게 있어 정말 실수 연발했던 문제였다 (그래도 백트래킹 재미있다) ① 입력 데이터 초기화 후 상어가 `(0, 0)` 에 물고기를 먹고 그 방향을 가진다 ② 모든 물고기들이 이사를 시작한다- 작은 번호부터 순차적으로 이사- 이동 가능한 위치를 찾을 때 까지 반 시계 방향으로 제자리 회전하면서 빈칸 또는 물고기를 찾아 위치를 교환한다- 상어가 있거나, 맵의 경계를 벗어난 경우 다음 위치로 회전- 만약 이사 가능한 위치가 없다면 제자리를 유지한다③ 상어가 먹이를 탐색한다- 상어는 빈칸으로 이동 불가하고 이동하는 도중에 있는 물고기는 먹지 않는다- 이때, 큰 물고기를 먹는다고 항상 최적의 해를 보장하지 않는다 ..
문제 링크https://www.acmicpc.net/problem/16236 풀이- 구현(시뮬레이션), BFS 격자형 그래프 탐색 문제 - BFS와 2중 for문 만으로 충분하게 풀이 가능한 문제 요구사항 및 절차 ① 현재 상어 위치에서 잡아 먹을 수 있는 물고기까지의 최단 경로 거리를 구한다 - 이때 상어의 크기 이상인 물고기가 있는 칸은 지나갈 수 없다 (상어 크기 )- multi source bfs로 최단 거리를 구함 (시간 복잡도 O(V + E)) ② 최단 거리 정보에서 가장 가까운 물고기 한마리를 선택 (없으면 break문으로 종료)- 여러 마리인 경우 가장 위에 있는 물고기 중 가장 왼쪽에 있는 물고기를 선택- 처음에 정렬을 사용하는 방법을 생각했는나, 그럴 필요 없이 2중 for문으로 최단 ..
최근 메모나 학습 정리를 좀 더 잘 관리하기 위해 Obsidian으로 갈아 타려하고 있다Markdown 문법을 지원하고, 이식성도 좋고 무엇보다 UI와 퍼포먼스가 깔끔하고 부드러워서 좋은 느낌을 받았다 시작하기에 앞서 "보기 좋은게 먹기도 좋다"라는 말처럼 테마(Theme)를 꾸미는 것부터 가장 먼저 관심을 가졌다AnuPpuccin 테마를 선택하고 따라하는데, 가장 중요한 Background 설정이 보이질 않았다 참고. https://www.youtube.com/watch?v=cw0XvIi5vP4 해결 과정 및 방법찾아보니 background 설정 기능을 snippets 통해 활성화 가능하다는 내용이 있었다 참고. 깃허브 이슈https://github.com/AnubisNekhet/AnuPpuccin/i..
1. 서론 (내.돈.내.산) 올해 2024년은 개발 역량 성장 부분에서 의미있는 한 해가 아니었나 싶다. 그동안 다양한 도서 / 강의 / 교육 등을 활용했었고, 5년간 자기개발에 약 450만원을 투자했다는 사실을 최근에 정리하면서 알게 되었다 (교육비 지원하는 회사없는가..) 자기 개발하면서 느낀거지만 "설명도 잘하고 전문성도 갖춘 전문가"도 있는 반면, "성의도 없고 광고에 속았다고 생각했던 강의"도 있었다. 그 중에서 올해 도움 받았던 강의가 하나 있었고, 그게 마침 패스트 캠퍼스 강의라서 연말 후기 이벤트 참여하게 되었다 (그렇다 이게 다 무료 쿠폰을 위한 포스팅이다)요즘 같이 정보가 넘쳐나는 시대에 이 강의를 선택해야 할지 망설이는 개발자가 있다면 이 후기가 참고가 되길 바라며 포스팅합니다*이..
앞서 키 생성과 포워딩 람다를 각각 기능 구현하고, API Gateway 연결하여 호출하는 내용을 다루었다.이번 포스팅에서는 도메인 주소를 AWS Route53 연결하여 원본 주소보다 길어지는 문제를 해결하고, 사용자 입력을 받을 정적 웹 호스팅(s3)을 다뤄본다 참고. https://dev-ljw1126.tistory.com/463 [AWS] 주소 축약 서비스(shorten url) 구현 - (1) 키 생성 람다이번 포스팅에서는 AWS 인프라를 활용해서 주소 축약 서비스를 만들어보려 한다.참고로 주소 축약 서비스는 긴 URL을 짧고 간단한 형태로 변환해주는 도구이다. 장점은 아래와 같다① URL 가독성dev-ljw1126.tistory.com https://dev-ljw1126.tistory.com/4..
앞서 긴 주소를 입력했을 때 키 생성(축약 주소)하여 반환하는 기능을 구현해보았다. 이번 포스팅에서는 축약 주소를 요청했을 때 원본 주소로 포워딩하는 기능을 구현해본다. 참고. https://dev-ljw1126.tistory.com/463 [AWS] 주소 축약 서비스(shorten url) 구현 - (1) 키 생성 람다이번 포스팅에서는 AWS 인프라를 활용해서 주소 축약 서비스를 만들어보려 한다.참고로 주소 축약 서비스는 긴 URL을 짧고 간단한 형태로 변환해주는 도구이다. 장점은 아래와 같다① URL 가독성dev-ljw1126.tistory.com 포워딩 Lambda Function 마찬가지로 Lambda Function을 신규 생성하고, VSCode에 연동하도록 한다. 스크립트 절차는 아주 심플하..
이번 포스팅에서는 AWS 인프라를 활용해서 URL 주소 단축 서비스를 만들어보려 한다. 긴 URL 주소를 단축했을 때의 장점은 아래와 같다① URL 가독성 개선, 공유 가능② 사용자 경험 개선 및 클릭률(CTR) 향상 ③ 브랜딩과 신뢰도 향상④ 링크 분석 및 트래킹 가능⑤ 관리 및 업데이트 용이성⑥ 제한된 공간에서의 효율성⑦ URL 관리 용이성 대표적으로 https://bitly.com/와 같은 서비스를 예로 들수 있다. "백문불여일견" 아래를 보면 한 눈에 이해 될 것이다. AWS 공식 블로그에서는 CloudFront를 앞단에 위치하고 있는데, 이번 포스팅에서는 3단계로 나눠직접 도메인을 발급하고 Route53 - API Gateway - Lambda - S3 연결하는 과정을 다뤄본다. Infra ..
토이 프로젝트로 [선착순 쿠폰 발급 시스템]을 만들어보고 AWS 배포를 해보았다. 도메인 발급은 하지 않고, 단순하게 개발 용도로 VPC, Subnet 구성하고 연결했던 내용을 기록으로 남긴다. VPC- Virtual Private Cloud, 가상 네트워크로 격리된 네트워크 환경에서 운영할 수 있도록 해준다- *RFC 1918 국제 규격에 따라 IP 설정 (위키백과) AWS 웹 콘솔에서 커스텀 VPC 생성 (10.0.0.0/16) 한다. 커스텀 VPC 생성시 라우팅 테이블, 기본 NACL(네트워크 ACL), 기본 보안 그룹(default) 만들어진다. 알기로는 네트워크 ACL은 stateless라서 인바운드, 아웃바운드를 둘 다 설정해야 하는 것으로 알고 있다. 반면 보안 그룹은 stateful로 인바..
앞서 Lambda 함수 사용하여 S3 저장소 업로드 이미지 리사이징 방법을 살펴보았습니다. 참고. https://dev-ljw1126.tistory.com/460 [AWS] Lambda 활용하여 image resize (+CloudFront) - (1)1편으로 AWS 인프라 사용하여 실무에서도 활용되고 있는 이미지 리사이징을 구현해봅니다.필요한 전체 코드나 과정은 AWS 공식 가이드를 참고해서 했습니다. 가이드에서는 Source bucket과 Destinatiodev-ljw1126.tistory.com Lambda를 활용하여 S3 이미지 리사이징 하는 방식은 아래와 같은 장단점이 있었습니다. 장점.① 자동화된 리사이징 이미지를 S3 업로할 때 자동으로 람다 트리거 되므로, 이를 통해 개발 및 운영 부담..
1편으로 AWS 인프라 사용하여 실무에서도 활용되고 있는 이미지 리사이징을 구현해봅니다.필요한 전체 코드나 과정은 AWS 공식 가이드를 참고해서 했습니다. 가이드에서는 Source bucket과 Destination bucket 분리하여 사용했는데, 포스팅에서는 간단하게 Bucket 하나에 디렉토리(origin, resize) 구분해서 작업합니다. 흐름은 아래와 같습니다.① S3 bucket의 origin/ 디렉토리에 원본 이미지 업로드② 이벤트 감지해서 Lambda 실행, 이미지 리사이징 후 S3의 resize/ 디렉토리 저장③ 사용자는 CloudFront 도메인 주소로 S3 이미지 호출 S3 버킷 생성region은 서울로 하고 외부 URL로 S3 직접 접근을 못하도록 퍼블릭 엑세스 차단 설정합니다..
“전투에서 실패한 지휘관은 용서할 수 있지만 경계에서 실패하는 지휘관은 용서할 수 없다”는 말이 있습니다. 이 말을 서비스를 운영하는 개발자에게 비춰 보면 장애는 언제든지 발생할 수 있더라도 그만큼 모니터링을 잘 해야 한다는 뜻입니다. - 김영한 CTO 앞에 포스팅에서 기본적인 인프라 구성해보았다. 이번 포스팅에서는 웹서버에 Docker 컨테이너 기반 Prometheus와 Grafana를 설치하고 대시보드를 생성하는 과정을 다뤄본다. 참고. https://dev-ljw1126.tistory.com/458 [NHNCloud] 기본 웹 서버, DB 인프라 구축 (vpc, subnet, floating ip, ..)기본 인프라 구성도nhn cloud 사용하여 아래와 같은 기본 인프라 구성해본다 참고로- ..