프로그래머스 - 소수 찾기 (Java, 백트래킹, 소수, 에라토스테네스의 체)
·
알고리즘
아이디어백트래킹 + 에라토스테네스의 체 백트래킹완전탐색, 순열, 조합 문제의 경우 백트래킹을 먼저 시도해보는 편이다. 일반적인 dfs 알고리즘에 visit 체크를 앞, 뒤로 추가하여 중복 방문을 막는다.딱히 종료 조건이랄 것도 없어서 종료 조건은 따로 주지 않았다. 에라토스테네스의 체소수를 판정하기 위해서는 특정 수보다 작은 수들로 나누어 떨어지는지 확인한다.하지만, 특정 수보다 작은 모든 수를 탐색하는 경우 시간초과가 발생할 수 있다.그러므로 에라토스테네스 체 알고리즘을 따라서 제곱근까지만 탐색한다.sqrt 사용 시 부동 소수점 오류가 날 수 있어서 역으로 생각하여  i * i 가 x보다 작거나 같은 경우까지 탐색해주었다. 마지막으로 중복값 제거를 위해서 Set을 사용했다. 코드import java.u..
프로그래머스 - 이중우선순위큐 (Java)
·
알고리즘
먼저 이중우선순위큐를 구현하기 위해서 유의해야 할 점매번 정렬을 하는 것은 비효율적 (시간초과 문제) 풀이 1. 우선순위 큐 2개 (최대힙과 최소힙) 구현PriorityQueue : 중복값 허용. 삭제 시 중복값 존재하는 경우, 우선순위가 높은 값 하나만 삭제.import java.util.*;class Solution { public int[] solution(String[] operations) { int[] answer = { 0, 0 }; PriorityQueue minQ = new PriorityQueue(); PriorityQueue maxQ = new PriorityQueue(Collections.reverseOrder()); for(S..
AWS Developer Associate (DVA-C02) 7일의 전사 후기
·
AWS 자격증
먼저 이 글은 상당히 편한 말투로 작성되어 있음을 양해 부탁드립니다. 서론클라우드 관련 자격증 하나 따고 싶다는 생각도 있었고, 비즈니스 로직 구현에는 조금 익숙해졌으나 클라우드 인프라나 아키텍쳐 쪽으로 조금 더 공부해보고 싶다는 생각이 있어서 클라우드 대빵인 AWS의 자격증을 따기로 했다.사실 자격증 따려고 마음 먹은 거는 약 4개월 전인데 그동안 너무 바빴다... 접수 방법https://aws.amazon.com/ko/certification/certification-prep/testing/ AWS Certification 시험 일정 예약온라인 시험 감독은 집이나 사무실과 같이 사적인 공간에서 시험을 치를 수 있는 시험 응시 환경입니다. 자신의 컴퓨터로 시험에 응시하고, 화면 공유 애플리케이션과 웹캠..
Docker - 도커 볼륨 설정
·
Docker
서론처음 프로젝트를 시작하고 로그백을 통해서 rolling policy며 로그 저장 경로며 다 설정을 했으나, 막상 배포 환경의 로그를 확인하려니 로그가 저장되지 않고 있었다. 분명 배포 환경에서 테스트를 했을 때 테스트가 잘 되고 있었는데, 클라이언트가 테스트를 하면 간헐적으로 오류가 발생한다는 얘기를 듣게 되었다. 억울한 마음에 로그를 뒤져봤으나 저장이 안 되고 있었고… 원인은 다음과 같았다.Github Actions를 통해서 CI/CD 자동화 파이프라인을 구축해 사용하고 있었는데, 매번 재배포시마다 기존의 컨테이너를 삭제하고 새로운 컨테이너를 띄우게 된다. 그러면 기존 컨테이너에 저장되던 로그들이 새로운 컨테이너가 올라갔을 때 모두 삭제되고 마는 것이다.그렇다면 컨테이너 내부에서 저장시키던 로그를 ..
Next.js 튜토리얼 - ch5. 페이지 간 네비게이팅
·
Next.js
Learn Next.js 튜토리얼 https://nextjs.org/learn/dashboard-app/getting-startedNext.js 튜토리얼 - ch5. 페이지 간 네비게이팅Next.js는 컴포넌트를 사용하여 불필요한 자원 낭비 혹은 네트워크 요청을 하지 않음으로써 네비게이션 최적화를 한다.Next.js의 컴포넌트의 특장점Client-side navigating링크 클릭 시 전체 페이지를 새로 로드하지 않고 JavaScript로 클라이언트 사이드 네비게이팅을 하게 되어 네트워크 비용을 줄일 수 있다. 부분적으로는 SSR을 하게 되지만, 전체 페이지를 새로 렌더링 하지 않기 때문에 사용자 경험을 향상시키고 불필요한 네트워크 요청을 줄여주는 장점이 있다.자동 code-splitting과 pre..
Next.js 튜토리얼 - ch4. 레이아웃과 페이지 생성하기
·
Next.js
Learn Next.js 튜토리얼 https://nextjs.org/learn/dashboard-app/getting-startedNext.js 튜토리얼 - ch4. 레이아웃과 페이지 생성하기Next.js App RouterNext.js 13버전부터 앱 라우터를 제공한다. 이전에는 /pages 디렉토리 하위에 경로 설정을 통해 라우팅을 했었지만,13버전부터는 /app 디렉토리 하위에 경로 설정을 통한 파일 시스템 기반 라우팅을 하게 된다. URL의 경로와 파일 경로가 일치하게 되는 것이다.다음은 예시이다.애플리케이션 실행 시 localhost:3000 번으로 호스팅 된다고 가정하자.localhost:3000/dashboard 경로에서 보여지는 페이지= /app/dashboard/page.jsxlocalh..
Next.js 튜토리얼 - ch3. 폰트 및 이미지 최적화
·
Next.js
Learn Next.js 튜토리얼 https://nextjs.org/learn/dashboard-app/getting-startedNext.js 튜토리얼 - ch3. 폰트 및 이미지 최적화Cumulative Layout Shift (CLS) https://vercel.com/blog/how-core-web-vitals-affect-seo Layout Shift는 웹 페이지가 로딩되는 동안 페이지 콘텐츠의 예상치 못한 이동을 나타내는 용어이다. 이는 페이지 안정성을 낮추고 사용자 경험을 저하시킬 수 있다. 또한 layout shift가 자주 발생하는 웹 페이지는 낮은 구글 페이지 랭크를 갖게 된다.웹 폰트 혹은 가로, 세로가 설정되지 않은 이미지는 layout shift를 발생시키는 요인이 될 수 있기 때..
Next.js 튜토리얼 - ch1 ~ 2. 프로젝트 기본 설정
·
Next.js
Learn Next.js 튜토리얼 https://nextjs.org/learn/dashboard-app/getting-startedNext.js 튜토리얼 - ch1 ~ 2. 프로젝트 기본 설정프로젝트 받기npm install -g pnpm // 패키지 매니저로 pnpm 설치해 사용. 더 빠르고 효율적임npx create-next-app@latest nextjs-dashboard --example "https://github.com/vercel/next-learn/tree/main/dashboard/starter-example" --use-pnpm// next 프로젝트 생성 명령어. --example 옵션 뒤에 기존 프로젝트의 깃허브 주소를 주어서 clone 해옴.cd nextjs-dashboard // ..