1. 가중치가 없을 때 → BFS모든 간선의 비용이 같을 때 (예: 한 칸 이동 = 1)BFS는 가까운 노드부터 차례대로 탐색하기 때문에 처음 도착한 거리가 최단거리이다.한 칸당 이동하는 데 드는 비용이 같고,int[][] map 환경에서 A에서 B까지 가는 데에 걸리는 최단 거리를 구하는 문제가 나오면다음과 같이 풀면 된다.import java.util.*;class Solution { static int[] dx = {1, -1, 0, 0}; static int[] dy = {0, 0, 1, -1}; public int bfs(int[][] map) { int n = map.length; int m = map[0].length; bo..
전체 글
꾸준함으로 성장하는 개발자👩💻반응형
문자열을 반복해서 다뤄야 할때, String 대신 StringBuilder를 사용하면 시간을 단축할 수 있다.String은 불변 객체이기 때문에, 반복적인 문자열 결합시 불필요한 객체 생성 → 시간 초과를 이어진다.코테에서 피해야 할 실수String s = "";s += "a" // 시간초과 위험 높음 메서드 정리1️⃣ append() : 문자열 추가StringBuilder sb = new StringBuilder();sb.append("hello");sb.append(" ");sb.append("world"); 2️⃣ toString() : 최종 문자열로 변환String result = sb.toString(); 3️⃣ 길이 확인int len = sb.length(); 4️⃣ charAt() / set..
·MSA
MSA 프로젝트에서 각 서비스마다 공통으로 사용하는 코드를 효율적으로 관리하기 위해 JitPack을 활용했습니다. 이 글에서 JitPack이 무엇인지와, 공통 모듈을 배포하고 서비스에 사용하는 방법을 정리해보려고 합니다.Jitpack이란?https://jitpack.io/Jipack은 Git 저장소를 Maven / Gradle 의존성으로 바로 사용할 수 있게 해주는 패키지 배포 서비스이다. 일반적으로 공통 모듈을 여러 서비스에서 사용하려면 각 서비스에 직접 포함시키거나(코드중복), 사설 저장소를 구축해서 사용할 수 있다. 하지만 이 방식들은 모듈 변경 시 서비스 별로 동기화가 필요하거나 저장소 운영비용이 드는 단점이 있다. Jitpack은 이러한 문제를 Git 저장소 기반 배포라는 방식으로 해결한다. ..
·MSA
정리- MSA 개념- 모놀리식 vs MSA- Spring Cloud- Eureka- FeignClient + LoadBalancing- 서킷브레이커: Resilience4j- API Gateway- Spring Cloud Config MSA란Microservices Architecture(MSA) 는 하나의 애플리케이션을 여러 개의 독립적인 서비스로 분리하여 개발, 배포, 유지보수를 용이하게 하는 소프트웨어 아키텍처 스타일이다. 각 서비스는 특정 비즈니스 기능을 수행하며, 서로 독립적으로 배포되고 확장될 수 있다. 서비스 간의 통신은 HTTP/HTTPS, 메시지 큐 등을 통해 이루어진다.특징독립적인 배포 가능성: 각 서비스는 독립적으로 배포할 수 있으며, 다른 서비스에 영향을 주지 않고 업데이트할 수 있..
이전 편에서는 토스페이먼츠 결제 플로우를 작성했습니다.https://galong.tistory.com/34 이번 편에서는 결제 연동 구현한 것을 정리했습니다.이 방식이 옳은 방식은 아닐 수도 있으므로, 참고만 부탁드립니다!더 좋은 방식이 있으면 댓글도 부탁드립니다. 🙇♀️ 들어가며이번 글에서는 토스페이먼츠 결제 위젯을 활용해주문 → 결제 요청 → 결제 승인 → 결과 페이지 이동까지의 흐름을 정리했습니다.주문서 진입 시 Payment 객체를 미리 생성해 서버 기준 결제 정보를 저장해두고, 결제 위젯 성공 이후에는 preparing 단계를 거치게 했습니다.preparing 단계에서 파라미터로 받은 paymentKey와 amount 정보 등을 서버에 보내 검증했습니다.그리고 외부 toss api 호출을 하..
1차 프로젝트 때 결제 파트를 담당했습니다.결제는 처음이라 우선 결제 플로우를 이해하는 것에 집중했습니다.이번 프로젝트에서는 PG사로 토스페이먼츠(Toss Payments)를 선택했고,공식 개발자 가이드가 상세하고 친절하게 설명이 잘 되어 있어서 구현 과정에서 많은 도움을 받을 수 있었습니다.https://docs.tosspayments.com/guides/v2/payment-widget/integration 결제 연동 과정에서 고민했던 부분은orderId와 amount 값을 언제 서버에 저장해야 할까?결제 요청 이전에 저장하는지결제 승인 이후에 저장하는지카드사 승인 이후 바로 successUrl로 이동하는 것이 맞을까?카드사 승인 완료 이후 무조건 successURL로 이동하게 되어있습니다.하지만 이 ..