본문 바로가기

전체 글285

[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.
JPA의 더티체킹과 영속성 컨텍스트.. 의 관계 ! 완벽이해 더티체킹을 적용하려고 개념을 되짚어 보다가 다시 정리해보려고 한다 ! 더티체킹이란 ? )JPA에서 영속성 컨텍스트가 관리 중인 엔티티 객체의 변경을 감지하고 자동으로 DB에 반영해주는 기능이다.트랜잭션이 끝나기 전에 엔티티의 값이 바뀌었는지 감지하고, 바뀐 경우에만 UPDATE 쿼리를 자동으로 날린다. 나는 이 기능을 주로 정보 수정 API에 유용하게 사용하고 있었다. 더티체킹이 없다면 회원 정보 중에서 이름을 수정한다고 했을 때@Transcationalpublic void updatedMember() { Member member = memberRepository.findById(1L); member.setName("newName"); memberRepository.save(member);}이렇게 바뀐.. 2025. 4. 22.
SpringBoot) 비동기 이벤트 기반으로 Elasticsearch와 RDB간 정합성 유지를 위한 노력 문제 상황회원 정보를 변경하거나 수정하면 더이상 검색 결과에 뜨지 않았다. 기존 구현 : 회원을 이메일과 이름으로 ES를 이용해 검색할 수 있고 이 각각의 도큐먼트는 회원가입 시에 Member 테이블 + Member 인덱스에 저장이 된다. 이후에 회원 정보 수정으로 이름을 변경하면 더이상 검색으로 다른 사용자를 찾을 수 없었고 - problem1회원 탈퇴를 했을 때 (softDelete라 DB에 남아는 있지만)도 여전히 검색으로 조회를 할 수 있었다. - problem2 생각해보니 회원 수정이나 삭제 할 때는 ES에 반영해주는 로직을 구현하지 않았었다 !이럴 경우 RDB와 ES간 정합성이 깨지는 문제가 발생한다.해결 방법 (고민)일단 제일 간단하게는 회원 정보 수정, 삭제 로직에 ES에도 도큐먼트를 .. 2025. 4. 19.
SpringBoot 프로젝트에서 SSE를 활용한 알림 기능 개발 도입 배경Petory 프로젝트에서 사용자에게 알림을 보내야 할 경우가 생겼다.어떤 조건을 만족시켰을 때 스켸줄러로 자주 체크하여 알림 정보를 보내주는 방법이 현재 나의 지식으로 구현할 수 있는 당장 떠오른 방법이다.다만 이렇게 하자니 실시간으로 알림을 보내려는 취지에 부합하지 않다고 느껴졌다. 그래서 실시간으로 알림을 보낼 수 있는 다른 방법을 찾아보았다 ! 스프링부트에서 구현할 수 있는 알림 방식1. PolllingHTTP를 이용한 서버-클라이언트 간 데이터 전달 동작과정 일정 주기로 클라이언트가 서버에 데이터를 요청하고 서버가 현재 상태를 응답.(데이터가 없어도 응답함) 장점 구현이 간단하다. 단점 업데이트 주기가 길면 실시간 성이라고 보기 어렵고 짧으면 불필요한 요청을 보내기 때문에 서버에 .. 2025. 4. 16.
728x90