![[프로그래머스] 이진 변환 반복하기(Java, 문자열, 구현)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAb9FB%2FbtsMd6ULeOv%2FqRN2vvqiBl0uXLX97w7piK%2Fimg.png)
문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/70129 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 풀이문자열 + 구현 문제로 주어진 요구사항 그대로 구현하면 되었다.0과 1로 이루어진 어떤 문자열 x에 대한 이진 변환을 다음과 같이 정의합니다① x의 모든 0을 제거 합니다② x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 바꿉니다문자열 s가 주어질 때 "1"이 될 때까지 변환 횟수와 제거된 0의 개수를 반환하시오 1. replaceAll()과 StringBuilder 성능 차이이진수로 표현되는 문자열 s ..
도서 정보https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=353716210&start=slayer 단위 테스트의 기술이 책의 최종 목표는 더 견고한 코드를 작성하고 싶은 모든 개발자가 단위 테스트의 정수를 제대로 배우고 모범 사례를 활용하도록 하는 것이다. 이 책은 크게 네 부분으로 나뉘어 있다. 1부에서www.aladin.co.kr 좋은 기회가 생겨서 도서 "단위 테스트의 기술"을 읽고 리뷰를 작성하게 되었습니다.단위 테스트를 처음 접하거나, 좋은 단위 테스트를 작성하고 싶어하는 분에게 책을 구매하는데 앞서 참고가 되었으면 좋겠습니다. 추천 대상*- 프론트엔드의 단위 테스트 방법을 알고 싶은 주니어 또는 백엔드 개발자 - 다른 언어로 테스트 이론 학습했거나, ..
![[도서] 만화로 배우는 리눅스 시스템 관리1 - 요약 정리](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2HeNr%2Fbtsz6iF7ACa%2FpNIsH5zPv058xJSgrpvDB0%2Fimg.jpg)
전자 도서관 이용하여 해당 도서를 읽고 포스팅 합니다 *무료 전자도서관 이용 후기https://dev-ljw1126.tistory.com/395 무료 전자 도서관 이용 후기 (with 교보문고 전자 도서관 앱)최근에 알게 된 전자 도서관 이용 후기 대해 포스팅합니다 개인적으로 읽고 싶은 책이 있을 때 매번 서점에 방문하여 도서 구매하거나, 알라딘 ebook과 같은 전자책을 구매해 왔습니다 규모가 큰dev-ljw1126.tistory.com *도서 구매 링크 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=90620424 만화로 배우는 리눅스 시스템 관리 1만화로 배우는 리눅스 서버 관리와 셸 스크립트. 시스템 관리 부서 신입 사원 리나 민트. 선배 사원 오노 ..
![[BOJ1339] 단어 수학 (Java, 그리디, 완전 탐색)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbvoiaq%2FbtsLUWiR853%2FnVFKRc8rFky4c08wZFKdyk%2Fimg.png)
문제 링크https://www.acmicpc.net/problem/1339 풀이- 완전 탐색 + 비트마스킹, 그리디 풀이- 각 알파벳을 0 ~ 9 숫자로 중복 없이 치환하여서 최대값을 구하는 문제 (같은 알파벳은 같은 숫자로 바껴야 하고, 중복 숫자x) 처음 완전 탐색 + 비트 마스킹으로 풀이했다. 그런데 공간복잡도와 시간복잡도가 너무 높이 나왔다.그래서 그리디 풀이 방법을 고민했는데, 아이디어가 전혀 떠오르지 않아 블로그를 참고하여 풀이했다 1) 완전 탐색 + 비트 마스킹- 중복을 제외한 알파벳을 구한다 - 알파벳별로 9~0 사이의 숫자를 할당하면서 완전 탐색을 수행한다- 이때 숫자 사용여부를 비트 마스킹 기법을 사용하였다 ( 9 ~ 0 자리의 비트를 표현하면 되므로 int 로 충분)- idx 가 알..
![[BOJ10597] 순열장난 (Java, 백트래킹)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB7510%2FbtsLPOG3JVU%2FK3pNIe3RFyc6AYb4si7vpK%2Fimg.png)
문제 링크 https://www.acmicpc.net/problem/10597 풀이- 백트래킹 사용- 정답은 구했으나 boolean[] visited 배열을 사용하는 것과 최대 수가 50인걸 파악하지 못한 풀이로 시간 초과 발생- 잘못 풀이한 부분에 대한 이력 남김 문제 설명과 같이 1 ~ N까지의 숫자로 이루어진 순열을 구해야한다- N = 10인 경우 1 부터 10 까지의 수가 중복 없이 모두 포함되어 있어야 한다는 의미- "kriii의 순열은 최소 1개 최대 50개의 수로 이루어져 있다."에서 (러프하게)최대 수가 50까지 라는 것을 파악할 수 있다- 연산을 편하게 하기 위해서 int[] nums 배열을 선언 후 숫자 초기화를 수행하였다 백트래킹 수행할 함수를 아래와 같이 선언하였다(idx >= 배열..
![[BOJ2661] 좋은 수열 (Java, 백트래킹)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwSes4%2FbtsLQRCgx4q%2F3IsNAHdQnDkmQClE9Fkefk%2Fimg.png)
문제 링크https://www.acmicpc.net/problem/2661 풀이- 백트래킹 사용- 임의의 길이의 인접한 두 개의 부분 수열이 동일한 것이 있으면, 그 수열을 나쁜 수열이라고 부른다. 그렇지 않은 수열은 좋은 수열이다- 인접한 두 개의 부분 수열이 서로 다르면서 좋은 수열 중 가장 작은 값을 찾는다 ①재귀를 호출할 때 항상 1 ~ 3을 순차적으로 순회하기 때문에 처음 종료 조건(길이가 N인)에 부합하는 값이 최소값임이 보장된다for(int i = 1; i *좋은 수열이기 위한 유효성 검사 관련하여 ② 이전 값(prev)를 재귀 호출시 파라미터로 전달하고 for문에서 다음으로 연결할 값과 같은 경우(prev == i) continue③ 이전 값(prev)과 다른 경우 해당 숫자를 문자열..
![[BOJ2580] 스도쿠 (Java, 백트래킹, 비트 마스크)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft1NEL%2FbtsLOWjzZxz%2FyeI4ucne3Tt9hnKkRcZNgK%2Fimg.png)
문제 링크 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인 경우 리스트에 좌표 정보를 담고, 나머지의 경우 비트 마스킹 표기를 할 수 있도록 ..
![[도서] 이것이 취업을 위한 코딩테스트다 (with 파이썬) 후기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTcjaT%2FbtsL9usVkMC%2FLSKjnUmw7CUTUOZlbHNTMK%2Fimg.jpg)
도서 학습 정보 및 자료① 구매 시기 : 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..
![[BOJ19237] 어른 상어 (Java, 구현, 시뮬레이션)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcNZ7Nj%2FbtsLOoVc2sP%2FhuZ4lPjZrGKdMEkQvwuKik%2Fimg.png)
문제 링크https://www.acmicpc.net/problem/19237 풀이개인적으로 상어 시리즈 문제 중에서 쉬운 편이었다고 생각한다구현 요구사항이 복잡해서 이해하는 수고가 필요할 뿐이지 반복문만으로 풀이 가능하였다 처음에 이해가 어려웠던게 아래의 상어의 방향별 우선순위 표였다문제에서 1, 2, 3, 4는 각각 위, 아래, 왼쪽, 오른쪽을 의미할 때①번 상어는 처음 오른쪽 방향을 바라보기 때문에 이동 가능한 위치를 탐색할 때 → ← ↑ ↓ 순으로 "빈칸" 또는 "자기 냄새나는 영역"을 찾는다 입출력 예시도 상어의 방향별 우선순위 때문에 처음에 알아보기 쉽지 않았지만, 두번 풀이하니 적응이 된다 입출력 예시 1에서5 4 4 // n m k (n : n * n, m : 상어 마리 수..
![[BOJ19236] 청소년 상어 (Java, 백트래킹, 시뮬레이션)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCRPZN%2FbtsLNB8NXpn%2F99t3RkDMzAnL7tDXKw2WN1%2Fimg.png)
문제 링크 https://www.acmicpc.net/problem/19236 풀이백트래킹이 약한 나에게 있어 정말 실수 연발했던 문제였다 (그래도 백트래킹 재미있다) ① 입력 데이터 초기화 후 상어가 `(0, 0)` 에 물고기를 먹고 그 방향을 가진다 ② 모든 물고기들이 이사를 시작한다- 작은 번호부터 순차적으로 이사- 이동 가능한 위치를 찾을 때 까지 반 시계 방향으로 제자리 회전하면서 빈칸 또는 물고기를 찾아 위치를 교환한다- 상어가 있거나, 맵의 경계를 벗어난 경우 다음 위치로 회전- 만약 이사 가능한 위치가 없다면 제자리를 유지한다③ 상어가 먹이를 탐색한다- 상어는 빈칸으로 이동 불가하고 이동하는 도중에 있는 물고기는 먹지 않는다- 이때, 큰 물고기를 먹는다고 항상 최적의 해를 보장하지 않는다 ..
![[BOJ16236] 아기 상어 (Java, BFS, 시뮬레이션)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcI3AfQ%2FbtsLOtIRvMt%2Fz3p8UNJ7vzhsePk11MfHS1%2Fimg.png)
문제 링크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..
![[패스트캠퍼스] 9개 프로젝트로 경험하는 대용량 트래픽 & 데이터 처리 초격차 패키지 Online. 수강 후기 (네고왕 선착순 쿠폰 발급 Project)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjeNdP%2FbtsLjqSCZtn%2FQnnYeBJxpxS0NSJDyymLok%2Fimg.png)
1. 서론 (내.돈.내.산) 올해 2024년은 개발 역량 성장 부분에서 의미있는 한 해가 아니었나 싶다. 그동안 다양한 도서 / 강의 / 교육 등을 활용했었고, 5년간 자기개발에 약 450만원을 투자했다는 사실을 최근에 정리하면서 알게 되었다 (교육비 지원하는 회사없는가..) 자기 개발하면서 느낀거지만 "설명도 잘하고 전문성도 갖춘 전문가"도 있는 반면, "성의도 없고 광고에 속았다고 생각했던 강의"도 있었다. 그 중에서 올해 도움 받았던 강의가 하나 있었고, 그게 마침 패스트 캠퍼스 강의라서 연말 후기 이벤트 참여하게 되었다 (그렇다 이게 다 무료 쿠폰을 위한 포스팅이다)요즘 같이 정보가 넘쳐나는 시대에 이 강의를 선택해야 할지 망설이는 개발자가 있다면 이 후기가 참고가 되길 바라며 포스팅합니다*이..
![[AWS] 서버리스 기반 URL 주소 단축 서비스 구현 - (3) 도메인 연결, S3 정적 웹 호스팅](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDqdlK%2FbtsJKElks35%2F49cRXzCKL4P3slRctTUpC1%2Fimg.png)
앞서 키 생성과 포워딩 람다를 각각 기능 구현하고, 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..
![[AWS]서버리스 기반 URL 주소 단축 서비스 구현 - (2) 포워딩 람다 구현](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3ooFg%2FbtsJKOneBIa%2Frj7vRAzjG3S1mZwIoCNulk%2Fimg.png)
앞서 긴 주소를 입력했을 때 키 생성(축약 주소)하여 반환하는 기능을 구현해보았다. 이번 포스팅에서는 축약 주소를 요청했을 때 원본 주소로 포워딩하는 기능을 구현해본다. 참고. https://dev-ljw1126.tistory.com/463 [AWS] 주소 축약 서비스(shorten url) 구현 - (1) 키 생성 람다이번 포스팅에서는 AWS 인프라를 활용해서 주소 축약 서비스를 만들어보려 한다.참고로 주소 축약 서비스는 긴 URL을 짧고 간단한 형태로 변환해주는 도구이다. 장점은 아래와 같다① URL 가독성dev-ljw1126.tistory.com 포워딩 Lambda Function 마찬가지로 Lambda Function을 신규 생성하고, VSCode에 연동하도록 한다. 스크립트 절차는 아주 심플하..
![[AWS] 서버리스 기반 URL 주소 단축 서비스 구현 - (1) 키 생성 람다 구현](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKEKVa%2FbtsJKScJbEB%2FDeORJxjPQRPgsjGouHoFKk%2Fimg.png)
이번 포스팅에서는 AWS 인프라를 활용해서 URL 주소 단축 서비스를 만들어보려 한다. 긴 URL 주소를 단축했을 때의 장점은 아래와 같다① URL 가독성 개선, 공유 가능② 사용자 경험 개선 및 클릭률(CTR) 향상 ③ 브랜딩과 신뢰도 향상④ 링크 분석 및 트래킹 가능⑤ 관리 및 업데이트 용이성⑥ 제한된 공간에서의 효율성⑦ URL 관리 용이성 대표적으로 https://bitly.com/와 같은 서비스를 예로 들수 있다. "백문불여일견" 아래를 보면 한 눈에 이해 될 것이다. AWS 공식 블로그에서는 CloudFront를 앞단에 위치하고 있는데, 이번 포스팅에서는 3단계로 나눠직접 도메인을 발급하고 Route53 - API Gateway - Lambda - S3 연결하는 과정을 다뤄본다. Infra ..
![[AWS] VPC, Subnet, EC2 개발 인프라 구성 (선착순 쿠폰 발급 시스템)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2lTkE%2FbtsJGaYTkLc%2FuGR2f7DCenJQ6IebTACVzk%2Fimg.png)
토이 프로젝트로 [선착순 쿠폰 발급 시스템]을 만들어보고 AWS 배포를 해보았다. 도메인 발급은 하지 않고, 단순하게 개발 용도로 VPC, Subnet 구성하고 연결했던 내용을 기록으로 남긴다. VPC- Virtual Private Cloud, 가상 네트워크로 격리된 네트워크 환경에서 운영할 수 있도록 해준다- *RFC 1918 국제 규격에 따라 IP 설정 (위키백과) AWS 웹 콘솔에서 커스텀 VPC 생성 (10.0.0.0/16) 한다. 커스텀 VPC 생성시 라우팅 테이블, 기본 NACL(네트워크 ACL), 기본 보안 그룹(default) 만들어진다. 알기로는 네트워크 ACL은 stateless라서 인바운드, 아웃바운드를 둘 다 설정해야 하는 것으로 알고 있다. 반면 보안 그룹은 stateful로 인바..
![[AWS] Lambda@Edge 활용하여 image resize - (2)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdvv0h2%2FbtsJvdVy1Bt%2FBtalhqH6VtEIFXyt2ECY9k%2Fimg.png)
앞서 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 업로할 때 자동으로 람다 트리거 되므로, 이를 통해 개발 및 운영 부담..