본문 바로가기

분류 전체보기288

서버 이미지 저장소 변경하기 AWS S3 -> MINIO 현재 상황aws ec2에 petory 프로젝트를 배포했었는데 프리티어 만료로 인해 지인의 미니 pc 서버로 옮겨가게 되었다.다만 프로젝트의 이미지 업로드에 대해서 어떻게 할 지 고민이 되었다.프리티어 만료로 어쨌든 AWS 기능을 쓰려면 돈을 내야하는 지라 옮긴 서버에 이미지를 저장하기로 하였다. 대안들1. 가장 간단하게로는 배포된 서버의 로컬스토리지에 그냥 냅다 저장한다.2. 새로운 Object 저장소를 이용한다. 대안 비교1. 로컬스토리지1차원적으로만 생각해도 폴더에 그냥 파일이 저장되어있는 방식이라 관리가 번거롭고 또한 사용자가 URL을 통해 이미지를 조회하게 될텐데 Public URL을 생성하고 해당 url로 서버 내부로 접근하려면 Nginx를 이용해 연결해줘야할 것이다. 또한 생각해본 단점들은 다.. 2026. 2. 9.
docker compose에 대하여 .. 계속 프로젝트를 하면서 깊이 있게 알아가는 것들이 많은데 한 번에 정리해보려고 한다. [volumes의 두 가지 용도]1. Named Volume 데이터 영속성volumes에 지금처럼 - minio-data:/data 라고 적어준 것은 named volume으로 minio-data는 도커 엔진이 관리하는 볼륨이다.Named Volume을 사용하면 도커 전용 명령어로 해당 컨테이너 관리가 가능하고, docker compose down으로 컨테이너를 완전히 삭제해도 데이터가 남아있다. (볼륨마저 지우려면 -v 옵션) 이 경우 하단에 volumes 옵션에 해당 볼륨을 꼭 정의 해줘야한다. 2. BindMount 호스트 - 컨테이너 간 실시간 공유아니면 /home/ec2-user/:/home/ec2-user/p.. 2026. 2. 8.
[1181] 단어 정렬 - 정렬, 문자열, Comparator (백준, Java) 1181번: 단어 정렬 처음에는 Map 자료구조를 이용해서 key 값으로 입력받은 단어의 길이, value 값을 list형태로 같은 길이의 문자들을 사전 순 정렬해서 넣으려고 했었다. 이렇게 할 경우 list.contains() 로 같은 단어가 있는지를 계속 확인을 하며 중복을 제거해야 했다. -> 리스트의 크기가 커질수록 contains()로 비교하면 속도가 느려진다.또한 Map 안에서 key 값인 단어 길이 수를 정렬하는 작업이 필요해서 비효율적이다. 따라서 다른 방법을 찾아보다가 Comparator에 대해 알게 되었다.예전에도 종종 써본 적은 있는데 확실한 개념을 모르고 있었던 것 같아 (그러니까 생각이 안 났..) 다시 정리해보려고 한다. Comparable : 객체 자기 자신의 기본 정렬 기.. 2026. 1. 8.
[14223] 작은 정사각형1 - 브루트포스, 조합, 수학 (백준, Java) 14223번: 작은 정사각형 1▶️시도했던 과정조합으로 N개 점 중 N - 2개를 뽑아 풀었으나 시간초과. 재귀할 때 순열처럼 계속 0부터 돌고있었다.제외할 2개의 점을 뽑는게 키포인트였고 넓이 구하는 로직에도 문제가 있었다. 1차시도 - 시간초과보자마자 N 개 중 N - 2개를 순서 없이, 중복 없이 뽑는 조합으로 풀면 될 것이라 생각했다. 조합 부분 & 넓이 구하는 부분 코드private static void combination(int cnt) { if (totalCnt == cnt) { getWidth(); return; } for (int i = 0; i maxX) maxX = cur.x; .. 2025. 12. 10.
[1406] 에디터 - stack, ArrayDeque (백준, Java) 처음에 다음과 같은 리스트로 구현을 했다. ▶️list 이용해 푼 코드 import java.util.*;import java.io.*; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int M = Integer.parseInt(br.readLine()); List list = new ArrayList(); .. 2025. 12. 8.
[1543] 영어 검색 - 문자열, 브루트포스 (백준, 자바, 반례포함) ? 처음에 5분 만에 replace()로 풀었는데 77%에서 틀렸다. 따라서 startIdx로 wordLen 길이만큼잘라서 비교해서 통과했다.근데 결국은 replace()로 하는 것도 맞는다 ?! 시행착오,,,,, 정답만 보고싶다면 ? -> 제일 아래로 !▶️처음 77%에서 틀렸던 코드import java.util.*;import java.io.*;public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String doc = br.readLine.. 2025. 12. 4.
[10158] 개미 - 구현, 수학 (백준, 자바, java) 아 정말 어렵게 풀었다. 주기성이 이해가 안 돼서 다음날까지 끌고옴. 해결컨셉은 반복 주기성을 파악하는 것. ▶️처음 든 생각개미의 이동을 분석해서 bfs나 dfs를 적용해서 푸는 건 줄 알았는데 그렇게 하면 무조건 시간 초과가 나고 t시간 후의 이동을 직접 하나하나 시뮬레이션 하는 것이 아니고 규칙을 찾아서 계산하는 문제였다. ▶️ConceptX와 Y좌표를 독립적으로 생각하는 것이 첫 단추이다.길이가 5인 수직선이 있다고 했을 때 X좌표만 가정해서 생각해보면0에서 출발하면 t = 5 일때 5의 위치에, t = 10이면 다시 제자리인 0으로 돌아오게된다. 결국 그럼 개미의 움직임은 2w, 2h 주기로 반복됨을 알 수 있다. (뭔가 이걸 보면서 요세푸스 문젠가 ? 원형으로 사람 5명이 둘러 앉았을때 나머.. 2025. 12. 3.
[3273] 두수의 합 - 투포인터 (백준, 자바, java) N이 최대 100_000임시간 복잡도는 잘 구했다 ! O(N), O(NlogN) 가능. 1차 시도)list에 X - 입력수를 넣어놓고 그 다음에 들어오는 수부터 list.contains(inputNum)으로 찾았더니 시간초과가 났다. 2차 시도)리스트를 없애고 배열로 했는데 메모리 초과가 났다.숫자를 저장할 배열의 크기를 실수로 너무 크게 지정했다.숫자의 값 자체를 인덱스로 쓸 것이기 때문에 1,000,001로 지정해주면 될 것이라고 생각했는데 틀렸다.배열에 저장할 값은 X - 입력값이기 때문에 X가 2,000,000이고 입력값이 1일경우1,999,999 인덱스에 1을 저장해야 할 텐데 오류남. 따라서 숫자를 체크할 배열 크기는 [2,000,001]로 지정. ▶️CountingArray 풀이import .. 2025. 12. 3.
코딩테스트 마스터 개발자를 목표로 잡은지 꽤나 시간이 흘렀는데 코딩테스트를 아직도 마스터 하지 못 했다.이번 달은 진짜 제대로 각잡고 마스터 해보려고 한다... 코딩테스트 무조건 합격시켜주는 7단계 학습법 코딩테스트 무조건 합격시켜주는 7단계 학습법앞선 글에서 코딩테스트 합격을 위해서는7단계 학습법 중에서 단 하나도 빼먹지 않고차근차근 수행해나가야한다고 했었죠. 7단계 학습법 다시 확인해볼까요? 코딩테스트 7단계 학습법코테 언어lover-orpheus.tistory.com 이 분 블로그를 참고해서 7단계 학습법을 준수하면서 ㅜㅜ 1. 코테 언어와 문법 2. 자료구조 완벽 이해3. 알고리즘 완벽 이해4. 알고리즘 유형별로 중급 난이도 문제5. 복잡한 구현 능력 키우기6. 랜덤문제로 문제 유형 파악7. 코테 환경처럼 시간 .. 2025. 11. 8.
728x90