전체 글 607

[백준, 자바, 9375번] 패션왕 신해빈

풀이해당 문제는 물론 재귀로 해서 문제를 해결할 수는 있지만수학적 규칙이 보여서 고민해보다가예전 수학 규칙이 생각남우선 예를 들어 3개의 의상 종류가 있을 경우모자 3개, 상의 2개, 바지 2개라고 할 경우각각 1개씩 착용한 것, 2개씩, 3개씩 착용한 경우에 대한모든 경우의 수를 더해야 하기에착용하지 않은 수를 각 의상 별로 하나씩 추가따라서 모자 4개, 상의 3개, 바지 3개로 생각 후모든 경우의 수를 구해야 하므로 4*3*3을 하면 36개단, 여기서 모든 것을 착용하지 않은 하나의 경우를 뺀다면 35개 식으로 구하기로 함그래서 다음과 같이 코드를 작성그리고 같은 이름의 의상은 없다고 했는데 체크 못해서... Set로 받은것... import java.io.*;import java.util.*;pub..

알고리즘 2024.12.05

Docker&Container - Docker hub, push, pull

Docker hub, push, pull이미지를 다른 컴퓨터로 보내는 방법보통은 이미지를 호스팅해주는 곳에 업로드 후 사용하는게 편함.호스팅 해주는 서비스Docker hubAWS ECRAzure container registry 등순서Docker hub에서 Repositories 태그 클릭create Repository (이미지 보관 폴더 같은 것)그냥 github 같은거임이후 Docker Desktop에서 해당 이미지의 option 쪽에 push to Docker hub 있는데 이거 하면 됨.그런데 가끔 안될 때가 있기에 명령어로 하는 방법은 다음과 같음터미널에서 docker tag 이미지이름:태그 유저명/repo이름:태그명ex) docker tag nodeserver:v1 유저명/myserver:v1..

Docker&Container 2024.11.30

Docker&Container - 성능을 위한 Dockerfile 작성법

성능을 위한 Dockerfile 작성법이전 작성한 Dockerfile의 경우엔 아주 기초적인 코드를 작성했기에성능 최적화를 위한 추가적인 코드를 작성할 예정docker build 시간을 단축변동 사항이 많은 부분은 밑에 작성하기.이유는 기존 실행한 코드를 캐싱하게 되는데저번이랑 차이가 없다면 캐싱해둔 결과를 사용하기에.ex) COPY . . RUN [”npm”, “install”]그래서 package.json, 라이브러리 파일은 변동사항이 별로 없기에 위에 작성하여 캐싱된 데이터를 사용하는 것으로 시간을 단축하기순서package.json 파일 먼저 옮기기npm install 실행소스 코드 옮기고 실행기존FROM node:20-slim WORKDIR /app COPY . . RUN ["npm", "inst..

Docker&Container 2024.11.29

Docker&Container - 컨테이너 다루기

컨테이너 다루기보통 Docker Desktop ui 로는 Docker의 모든 기능을 사용할 수 없기에터미널에 명령어를 작성하여 사용하는 것이 대부분이라고 함.우선 이미지 실행은 터미널에 아래의 명령어를 입력하면 됨docker run 이미지명:태그명다만 이렇게 실행하게 되면 터미널이 점유하게 되어 다른 명령어를 작성할 수 없음그래서 백그라운드로 실행하도록 하기 위해선 아래와 같이 -d를 추가하기d → detached = 떨어져 있는docker run -d 이미지명:태그명그리고 서버가 들어있는 이미지는 그냥 실행하면 안되고, 포트를 설정 후 실행해야 함.docker run -d -p 내컴퓨터포트:컨테이너포트 이미지명:태그명그래서 나는 docker run -d -p 8080:8080 nodeserver:v1 ..

Docker&Container 2024.11.29

Docker&Container - Dockerfile로 도커 이미지 만들기

Dockerfile로 도커 이미지 만들기우선 현재 만들어진 코드 폴더에서 코드를 작성하기Dockerfile로 이름을 작성 후, 내 프로그램 구동시 어떤 것을 할 것인지 작성해야 함.즉, 밀키트 레시피를 작성해야 함.어떤 os를 사용할 것인지설치할 프로그램어떤 터미널 명령어를 실행할 것인지어떤 파일을 추가할 것인지우선 강의에서는 이전 node 강의 시 작성한 코드를 가져왔던데따로 설명이 없어서 아래 순서로 작성하기(node.js 설치 되어있어야함.)console 창 열어서npm init -y 입력해서 package.json과 package-lock.json 만들기이후 npm i express 입력해서 설치하면서, node_modules 생성된 것 확인하기이후 server.js 파일을 만들어서 아래와 같이 ..

Docker&Container 2024.11.29

Docker&Container - 시작하기 & 설치 & 이미지와 컨테이너 개념

Docker란?쉽게 생각하자면 밀키트라고 생각할 수 있음.도커 이전에는 VM(Virtual Machine)을 사용함다만 기존 OS 위에새로운 OS를 추가로 설치했기에 무거워지는 단점이 있었음그래서 도커가 사용됨도커란?OS, 개발용 SDK, 라이브러리, 필요한 프로그램, 코드가 담긴 밀키트이자, 해당 밀키트를 실행해주는 툴리눅스 자체의 가벼운 가상화 기술이 있었는데, 이를 활용하면 컨테이너를 만들 수 있었음(가상 컴퓨터)이것을 더욱 간편하게 사용할 수 있도록 하는 것이 도커.컨테이너란?이러한 도커(밀키트)를 실행하는 가상의 컴퓨터단점데이터를 영구적으로 보관, 관리할 때는 별로 (데이터 휘발성이 강하기에)그래서 도커를 만들어서 서버로 보내면 배포를 할 수 있음.이를 활용해서기존에는 다양한 서버의 기능을 하나..

Docker&Container 2024.11.28

[백준, 자바, 1094번] 막대기

풀이해당 문제는 막대를 가지고 장난치는 문제인데계속해서 남은 막대 중짧은 막대를 절반으로 자르는  문제이기에간단히 우선순위 큐를 사용해서 문제를 풀고자 했음그리고 계속해서 배열의 모든 값을 더하는 건비효율 적이라 판단하여 조기 길이인 64에서조건에 따라 계속해서 차감하는 것으로 현재 길이를 간단히 파악하고자 함이에 따라 길이가 맞춰졌다면 while문을 탈출하고현재 배열의 개수를 출력 후 해결 import java.util.*;public class _1094 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int X = sc.nextInt(); int hap = 64;..

알고리즘 2024.11.27

[백준, 자바, 1268번] 임시 반장 정하기

풀이오늘도 깨달았다...문제를 확실히 읽지 않는자너는 그냥 틀려라!!!처음에는 단순히 같은 반이었던 학생을 카운팅하는 것으로중복해도 계속 카운팅해서 제출했다가 틀림.이후 다시 확인해보니 중복을 제거 후 카운팅하는 것으로어떻게 해결할지 고민하다가 그냥3차원 배열을 사용하여 해결하기로 함.이후에 제출했는데 77%에서 틀림.그래서 다시 확인해보니 같은 반이 된 적이 없는 경우에도초기값으로 인해 존재하지 않는 0번 학생이 출력되고 있다는 것을확인하여 변경 후 제출.결론.문제를 똑바로 읽자. import java.io.*;import java.util.HashSet;import java.util.Set;import java.util.StringTokenizer;public class _1268 { publi..

알고리즘 2024.11.27

SpringBoot - JWT 필터를 활용한 전역 인증 구현

1. JWT 기반 인증의 흐름JWT를 사용한 인증 과정은 다음과 같이 진행됩니다:사용자가 로그인하면 서버는 사용자 정보를 검증한 후, JWT 토큰을 생성하여 클라이언트에 반환합니다.클라이언트는 이후 요청 시마다 이 JWT를 헤더에 포함하여 서버로 전달합니다.서버는 전달받은 JWT의 유효성을 검증한 후 요청을 처리합니다.2. 프로젝트 환경 설정Spring Boot 3.xDependencies: Spring Web, Spring Security, jjwt(JSON Web Token), LombokMaven Dependency 추가: io.jsonwebtoken jjwt-api 0.11.5 io.jsonwebtoken jjwt-impl 0.11.5 io.jsonwebtok..

SpringBoot 2024.11.26

[백준, 자바, 11286번] 절댓값 힙

풀이해당 문제는우선순위 큐 문제인데별도의 조건으로 정렬할 수 있을지 궁금했는데2차원 배열에서 sort 할 때 Comparator 사용해서인덱스 별 조건에 따라 정렬하는 것과 같이초기화 할 때 조건을 추가하니 가능하다는 것을 알게 됨. import java.io.*;import java.util.*;public class _11286 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWri..

알고리즘 2024.11.25