전체 글188 [서평] 오후의 예향(미시마 유키오) - 당신에게 오후란 어떤 의미인가요? 줄거리"후사코"는 "노보루"의 어머니이다. 후사코는 남편과 사별하고 노보루를 홀로 키우고 있다. 노보루는 아직 어린이인 자신의 현실에 대한 염증을 느끼고 있으며, 세계가 가짜라고 생각한다. 어느 날 자신의 방안에 후사코의 침소를 엿볼 수 있는 구멍을 발견한다. 그리고 자신의 어머니를 몰래 관찰한다. 시간이 지나고 선박이 항만에 정박하고 "류지"가 그들 앞에 나타난다. 후사코는 류지에게 사랑에 빠져 버린다. 류지 또한 바다만이 자신의 이상이고 이 이상만이 자신의 삶이라 생각했지만, 후사코를 만난 후로 그 생각이 차츰 꺾인다. 노보루 또한 세계가 아닌 류지가 표류하는 바다는 진짜라고 생각한다. 류지는 뱃사람이기에 다시 바다로 출항하며 여름의 짧은 만남은 끝난다. 겨울이 되고 류지는 다시 선박이 정박하고 후사.. 2025. 3. 18. [SwiftUI] ScrollView + AsyncImage + LazyLayout 트러블 슈팅 이번에 SwiftUI + ScrollView + ImageView 쓰면서 겪었던 트러블 슈팅을 정리해 보려고 합니다. LazyLayout + AsyncImageLazyLoyout과 AsynImage를 쓰면서 문제가 있었습니다. LazyLayout에 할당된 AsyncImage가 이상하게 동작했습니다. 우리는 LazyLayout을 통해 사용자 화면에 나타난 AsyncImage를 부를 것 입니다. 하지만 AsyncImage를 loading하다가 에러가 생기거나 연결이 끊긴 경우에 자동으로 AsyncImage가 처리할 것으로 생각했지만 실제로는 그러지 않았습니다. 그리고 내부 URLSession.shared를 사용하여 이미지를 받아오기에, Cache정책이나 Detail한 부분에 대해서 설정하기 어려웠습니다. .. 2025. 3. 18. [알고리즘] 도둑질 python(프로그래머스) 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42897# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 해결 전략이 문제는 원형으로 배치된 집들에서 도둑이 최대 금액을 털 수 있는 경우를 찾는 동적 계획법(DP) 문제입니다. 핵심은 다음과 같습니다:원형 구조 처리: 첫 번째 집을 털면 마지막 집을 털 수 없고, 반대 경우도 마찬가지입니다.Case 1: 첫 번째 집을 터는 경우 (마지막 집 제외)Case 2: 첫 번째 집을 털지 않는 경우 (마지막 집 포함 가능)→ 두 가지 경우로 분리하여 계산합니다:DP 배열 설계:dp[i][0]:.. 2025. 2. 13. [알고리즘] 메뉴 리뉴얼 python (프로그래머스) https://school.programmers.co.kr/learn/courses/30/lessons/72411 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr이번 글에서는 Python을 사용해 코딩 테스트 문제를 해결한 방법을 공유합니다. 문제는 특정 고객 주문 기록을 바탕으로 가장 자주 등장하는 단품 메뉴 조합을 찾아 코스요리 메뉴로 구성하는 것입니다. 이 과정에서 itertools 모듈의 combination와 lambda 정렬 함수를 활용해 해결했습니다. 문제 풀이와 함께 코드의 각 부분을 자세히 설명하겠습니다.문제 요약여러 손님이 단품 메뉴를 조합해 주문합니다.특정 개수의 단품 메뉴를 조합해 .. 2025. 2. 12. [서평] 봄눈 (미시마 유키오) 줄거리기요아키는 1900년대 초반의 귀족 자제이다. 어릴적부터 사토코와 친하게 지냈다. 언젠가부터 그는 그녀를 좋아하는 마음이 싹텄지만 이 마음을 완강하게 받아드리지 못하였다. 사토코는 기요아키를 사랑하였지만 기요아키의 완강한 거절로 다른 집안과 혼약을 맺게 된다.기요아키는 사토코가 혼약을 맺자 진심으로 그녀를 좋아한다는 것을 깨닳았다. 혼약(그 당시에는 천황의 착허를 받아야 했다)했지만 임자있는 사토코와 지속적으로 밀회를 갖는다. 결국 그녀는 기요아키의 아이를 갖게 되고 밀회가 탄로 나버린다.사토코의 집안은 천황의 착허를 거스를 수 없어 애를 지우기로 한다. 지우고 난 후 그녀는 출가를 결심하여 절에 들어가게 된다. 기요아키는 다시 사토코를 만나기 위해 자신의 신분을 무시한채 여정길에 올랐다. 그는 그.. 2025. 2. 10. [알고리즘] 파괴되지 않은 건물 python(프로그래머스) 링크: https://school.programmers.co.kr/learn/courses/30/lessons/92344 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 누적합을 활용한 파괴되지 않은 건물 문제 해설1. 문제 해결 접근 방식: 2차원 누적합이 문제의 핵심은 2차원 배열에서의 누적합(prefix sum) 기법을 활용하는 것입니다. 일반적인 브루트포스 방식으로 접근하면 시간 복잡도가 매우 높아져 효율적인 해결이 불가능합니다. 누적합을 활용한 파괴되지 않은 건물 문제 해설 1. 스킬의 영향력 이해하기예를 들어 다음과 같은 3x4 보드가 있다고 가정해보겠습니다:[ [5, 5, 5, 5], .. 2025. 2. 9. [알고리즘] 카드 짝 맞추기(프로그래머스) 코드 동작 및 알고리즘 설명1. 최단 경로 탐색 (firstRoute 함수)카드 선택 과정에서 커서 이동은 매우 중요합니다.이동은 두 가지 방식으로 가능하는데, 한 칸씩 이동하는 방법과 Ctrl+방향키를 이용해 한 번에 여러 칸 이동하는 방법입니다.이를 위해 **BFS(너비 우선 탐색)**를 사용하여 현재 위치에서 목표 위치까지의 최소 이동 횟수를 구합니다.1-1. 행 이동 (goRow)목적: 현재 위치의 행에서 목표 행까지 이동할 때, 한 칸 이동과 Ctrl 이동(빈 칸 건너뛰기)을 모두 고려합니다.동작 방식:시작점에서 시작하여, 상하 두 방향(dir이 1 또는 -1)으로 인접한 칸으로 이동할 수 있는지 확인합니다.또한, 연속된 빈 칸들을 뛰어넘어 카드가 있는 칸 또는 보드 끝까지 이동할 수 있도록 w.. 2025. 2. 8. [알고리즘] 징검다리 건너기 (프로그래머스) 징검다리 건너기 - 프로그래머스 Level 3문제 접근 방식이 문제의 핵심은 "k 크기의 구간에서 최대값을 찾고, 그 최대값들 중 최소값을 찾는 것"입니다. 이는 다음과 같은 의미를 가집니다:k 크기 구간의 최대값: 해당 구간을 건널 수 있는 최대 인원 수모든 구간의 최대값들 중 최소값: 전체 징검다리를 건널 수 있는 최대 인원 수해결 방법 - 최적화된 풀이import collectionsdef solution(stones, k): if len(stones) == k: return sum(stones) d = collections.deque() res = float('inf') for ind in range(len(stones)): # 1. 현재 윈도우를 벗.. 2025. 2. 7. [SpringBoot] BE관점에서 채팅에 관련한 고민들 (설 맞이 해커톤 2일차) 채팅과 관련된 기능을 구현할때 생겼던 고민들을 정리한 블로그 입니다. 1. 채팅은 항상 WebSocket으로 진행되어야 할까?채팅은 웹 소켓으로 만진행되지 않아도 될 것입니다. 이유는 Polling같은 실시간성을 갖게 하는 방법을 추가하면 된다고 생각했습니다. 근본적으로 어떤 DataSource를 서버에 요청하게 되면 서버는 적절한 자원을 Client에게 전달해 줄 것입니다. 이러한 Feature를 근본으로 두면 꼭 WebSocket으로 하지 않아도 됩니다. (1) Polling으로 해결할 수 있는 채팅의 장단점장점으로서는 간편한 구현, 단점으로서는 주기가 짧으면 서버에 오버헤드 발생, 주기가 길다면 실시간성이 떨어짐. 명확한 장단점을 갖고 있습니다. 이를 해결하기 위해 LongPolling이라는 기.. 2025. 1. 30. [SpringBoot] 폴더링에 관련해서 (설 맞이 해커톤 1일차) 이번에 프로젝트하면서 폴더링 고민을 했습니다. 고민내용은 다음과 같습니다. 1. 폴더링을 어떻게 가져갈까?일단 폴더링을 어떻게 가져갈까에 대해서 고민했습니다. 정통적인 방식인 controller, domain, service로 분리를 하였습니다. 실제로 분리하면 다음과 같은 폴더 구조가 생성됩니다. (1) 진입 폴더에 Controller, Domain, Dto, Service, Repository, Entity 분리 상기 폴더링은 이전 프로젝트에서 했던 폴더링이었습니다. 위와같은 폴더링은 폴더 하나에 너무많은 파일이 응집되어 있어 찾기 불편하다는 점 이었습니다. 예를 들어 HealthCheck Controller 와 TODO Controller를 하나의 폴더에서 관리하는 것이 응집성을 떨어뜨린다고.. 2025. 1. 29. [Spring] Spring IoC 컨테이너와 빈에 대한 소개 (day2) Spring IoC 컨테이너와 빈에 대한 소개이 장에서는 Inversion of Control(IoC) 원칙에 대한 Spring Framework의 구현 방식을 다룹니다. Dependency Injection(DI)은 IoC의 특화된 형태로, 객체가 자신의 의존성(즉, 함께 작동하는 다른 객체)을 생성자 인자, 팩토리 메서드 인자, 또는 객체 인스턴스가 생성된 이후나 팩토리 메서드에서 반환된 후에 설정되는 속성을 통해 정의합니다. 그런 다음 IoC 컨테이너가 빈을 생성할 때 이러한 의존성을 주입합니다. 이 과정은 본래의 객체가 클래스의 직접적인 생성이나 Service Locator 패턴과 같은 메커니즘을 사용해 의존성의 생성 또는 위치를 제어하는 방식과 반대되기 때문에 Inversion of Contro.. 2025. 1. 24. [Java] @FunctionalInterface를 활용해서 깔끔한 코드 작성해보기 짧 주의 문제 상황: swift 처럼 callback함수를 통해 코딩하고 싶었는데 어떻게 할 방법이 없었음, 그래서 Function이라는 함수를 사용했는데 다음과 같은 문제점이 있었음1. callback에서 직접 throw를 처리해야함. 즉 callback에서 throw를 넘기지 못하는 문제가 발생ㅎ2. 너무나 많은 try - catchblock때문에 정신없음 As is실제 어지럽게 작성한 코드. Function로 어거지로 해결하려다가 가독성 및 제대로 수행하지 못하고 에러가 난 모습을 볼 수 있습니다. private T createPreparedStatement(String sql, Function executor) throws SQLException { try ( Conn.. 2025. 1. 23. 이전 1 2 3 4 ··· 16 다음