본문 바로가기

전체 글668

[BOJ 백준] 18110 solved.ac (자바 풀이, 계수 정렬) 📌 문제solved.ac는 Sogang ICPC Team 학회원들의 알고리즘 공부에 도움을 주고자 만든 서비스이다. 지금은 서강대뿐만 아니라 수많은 사람들이 solved.ac의 도움을 받아 알고리즘 공부를 하고 있다.ICPC Team은 백준 온라인 저지에서 문제풀이를 연습하는데, 백준 온라인 저지의 문제들에는 난이도 표기가 없어서, 지금까지는 다양한 문제를 풀어 보고 싶더라도 난이도를 가늠하기 어려워 무슨 문제를 풀어야 할지 판단하기 곤란했기 때문에 solved.ac가 만들어졌다. solved.ac가 생긴 이후 전국에서 200명 이상의 기여자 분들께서 소중한 난이도 의견을 공유해 주셨고, 지금은 약 7,000문제에 난이도 표기가 붙게 되었다. 어떤 문제의 난이도는 그 문제를 푼 사람들이 제출한 난이도 .. 2025. 6. 3.
이벤트 드리븐 트러블슈팅 Ep. 2: 사라진 혜택, 중복된 포인트? Kafka 메시지 처리, 어디까지 믿어야 할까 0. 이 글의 탄생 배경지난 〈이벤트 드리븐 트러블슈팅〉 첫 번째 에피소드에서는 비동기 파이프라인의 타이밍 불일치 이슈를 살펴보았습니다. 구체적으로는 외부 결제 API(Google Play 등)와의 연동 과정에서 발생할 수 있는 'NOT_CONSUMED 상태의 영수증'과 같은 오류를 중심으로, 그 원인과 다양한 현실적인 해결 전략들을 공유드렸습니다. https://upcurvewave.tistory.com/752 비동기 결제 파이프라인에서 구글 API가 늦을 때 생기는 일 (이벤트 드리븐 트러블슈팅 ep.1)0. 이 글의 탄생 배경이 글은 〈이벤트 드리븐 트러블슈팅〉 시리즈의 첫 번째 포스팅입니다. 결제팀 백엔드 엔지니어로 일하면서 비동기 방식으로 결제 이벤트를 처리하다 보면 재밌는 이슈를upcurvew.. 2025. 6. 1.
[BOJ 백준] 1759 암호만들기 (백트래킹 자바 풀이) 📌 문제 바로 어제 최백준 조교가 방 열쇠를 주머니에 넣은 채 깜빡하고 서울로 가 버리는 황당한 상황에 직면한 조교들은, 702호에 새로운 보안 시스템을 설치하기로 하였다. 이 보안 시스템은 열쇠가 아닌 암호로 동작하게 되어 있는 시스템이다. 암호는 서로 다른 L개의 알파벳 소문자들로 구성되며 최소 한 개의 모음(a, e, i, o, u)과 최소 두 개의 자음으로 구성되어 있다고 알려져 있다. 또한 정렬된 문자열을 선호하는 조교들의 성향으로 미루어 보아 암호를 이루는 알파벳이 암호에서 증가하는 순서로 배열되었을 것이라고 추측된다. 즉, abc는 가능성이 있는 암호이지만 bac는 그렇지 않다. 새 보안 시스템에서 조교들이 암호로 사용했을 법한 문자의 종류는 C가지가 있다고 한다. 이 알파벳을 입수한 민식.. 2025. 5. 25.
백트래킹 개념, 유망 함수와 가지치기, 예시 문제로 이해하기 백트래킹 개념 이해하기완전 탐색과 그 문제점완전 탐색(Brute Force)은 가능한 모든 경우를 하나씩 전부 확인하여 문제를 해결하는 알고리즘이다. 대표적인 방식으로 깊이 우선 탐색(DFS)와 너비 우선 탐색(BFS) 방식이 있다. 아래 그림은 루트 A에서 시작해 자식 노드 B, C, D와 그 아래 레벨을 가진 작은 트리를 대상으로, DFS와 BFS가 동일한 공간을 어떻게 “완전 탐색”하는지 보여 준다. DFS A B C D 1 2 3 4 BFS A B C D 1 2 3 4 깊이 우선 탐색은 루트에서 출발해 한 방향으로 가능한 한 깊이 내려간 뒤 더 내려갈 수 없으면 직전에 갈림길이 있던 노드로 “.. 2025. 5. 25.
[프로그래머스] 타겟 넘버 (3가지 풀이 방식, DFS, 트리, 그리고 수학적 공식을 이용한 최적화) 📌 문제n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3+1-1+1+1+1 = 3+1+1-1+1+1 = 3+1+1+1-1+1 = 3+1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. ⚔ 제한 사항 - 주어지는 숫자의 개수는 2개 이상 20개 이하입니다.- 각 숫자는 1 이상 50 이하인 자연수입니다.- 타겟 넘버는 1 이상 1.. 2025. 5. 24.