전체 글
-
백준 6236번 용돈 관리 JAVA카테고리 없음 2026. 2. 5. 13:57
요구사항 정의N일 동안 사용할 금액이 주어지고, 통장에서 정확히 M번 돈을 인출 한 번 인출할 때마다 K원을 뽑아 쓰며, 부족하거나 남아도 다시 인출 가능정확히 M번 인출이 가능하도록 하는 최소의 K제약 조건N ≤ 10^5금액 ≤ 10^4풀이 방법시간복잡도를 신경안쓰고 푼다면 0부터 모든 금액의 합중에서 조건을 만족하는 가장 최소값을 구하는 것 for m : 0 .. sum(money): if(check(idx)) then answer = m 하지만 이렇게되면 시간복잡도가 O(10^9)가 되기때문에 시간초과가 발생함 그래서 떠올린게 이진탐색 이진탐색에서는 2가지를 설계해야한다.양쪽값의 범위true/false 조건 양쪽값의 범위여기서 가장 최솟값은 사용할 금액의 최댓값이다.100원씩 사용한다고 했을 ..
-
소프트웨어 마에스트로 16기 회고SW 마에스트로 2026. 1. 17. 14:34
SW 마에스트로 수료 후 변화한 점과 앞으로의 목표 총평소프트웨어 마에스트로를 진행한 1년이 값졌다고 생각한다.비록 작년에 취업은 하지못했지만,소마를 진행하면서 "만약에 회사에 취업했더라도 이런 깨달음을 얻을 수 있을까?"라는 생각을 많이 했다. 사용자 중심의 사고하기# 소마를 열심히 하게 된 동기부여문제에 대해 가설을 세우고 서비스를 만들었을 때, 많은 사용자가 사용한다면 문제를 해결한 것이라는 자유 멘토링이 인상 깊었다.이 멘토링 이후에 많은 사용자가 사용하는 서비스를 만들어보고 싶다는 동기부여가 되었다. # 문제를 열심히 정의해보려고 했던 이유초반에 힘들었던 점은, 가설을 검증하면서 문제를 구체화하는 과정이었다.병역특례 개발자로 일하면서 기획자가 하던 일을 보긴 했지만, 직접 해보니 어려웠다.그럼에..
-
내가 사용한 n8nSW 마에스트로 2025. 12. 29. 22:19
소프트웨어 마에스트로에서 n8n을 적용한 후기 n8n을 선택하게 된 배경요구사항우리 서비스의 핵심 기능인 '토픽 타임라인'과 '후속기사 알림'을 구현하기 위해서는 여러가지 작업들이 필요했다.전처리: RSS 피드 크롤링, 뉴스 기사 요약, 텍스트 임베딩, AI 이미지 생성라우팅: 뉴스 클러스터링, 토픽 저장, FCM 알림 푸시, Discord 알림 기존 아키텍처의 문제점 이 방식의 한계는 여러 단계를 거치는 프로세스를 관리하기 어렵다는 점이었다.특히 중간에 실패할 경우 어느 지점에서, 어떤 이유로 멈췄는지 파악하는 데 비용이 컸다. Cloud Watch에서 Payload를 확인하고 Lambda에서 다시 동일한 결과가 나오는지 재현하는 과정을 반복했다.개발 과정에서 이러한 방식에 피로함을 느끼고 긴 프로세스..
-
내가 사용한 애자일(2/2)SW 마에스트로 2025. 12. 17. 23:35
우리 팀에서 사용했던 애자일을 정리하고 개선점을 생각하기 요약하자면 우리 팀은 평일에는 데일리스크럼을 진행하고스프린트 마다 백로그 리파인먼트-플래닝-스프린트 리뷰-회고를 진행했다. 데일리스크럼어떻게 했는가?보통 오후 10시에 시작해서 15분~20분 사이로 Discord를 통해 진행했다.만약에 팀원 중에 일정이 있는 경우에는 약속시간을 미루거나 비동기 스크럼* 방식으로 했다. * 비동기 스크럼은 디스코드 채널에 내용을 공유하고 댓글을 다는 방식이다.* 데일리스크럼 템플릿- 기분 점수: 기분 점수는 프로젝트 몰입도나 개인적인 상황을 종합해서 1~10점 이내로 정한다. - 오늘 한일/내일 할일 : 진행사항과 어려운점 등을 적는다.- 공유하거나 도움 요청할 일이 있나요?: 일정을 리마인드하거나 내가 겪고 있는..
-
내가 사용한 애자일(1/2)SW 마에스트로 2025. 12. 15. 15:42
소프트웨어 마에스트로에서 애자일 프로세스를 경험하고 느낀점을 정리 소프트웨어 마에스트로를 하기 전의 ‘나’소프트웨어공학을 배우면서 폭포수와 애자일의 차이를 이론적으로 배움JIRA를 사용해봤지만 애자일 위에서 사용해보지는 않았음 소프트웨어 마에스트로 초반의 ‘나’애자일이 무엇인가?를 정의하려고 애썼다.. 아래는 내가 실제로 했던 고민들이다. “회고를 잘하고 싶다..! 회고는 어떤 식으로 진행하는 것이 Best일까?”“User Story, Task, SubTask의 차이점은 뭐지? 어떤 기준으로 나눠야할까?”“User Story는 사용자는 OO 할 수 있다.. 이런식으로 작성해야한다는데 이렇게 작성하는게 맞나?” 이러한 궁금증을 해결하기 위해서 자유멘토링도 듣고, 워킹어스 유튜브도 여러번 돌려보면서 팀의 프..
-
백준 1162번 도로포장 JAVA알고리즘 2025. 11. 9. 14:35
요구사항 정의노드 1부터 N까지 최소값으로 가는 경로의 합 찾기가는 도중에 도로를 포장하여 최대 K번 경로를 0으로 만들 수 있음제약 조건T(걸리는 시간) 10^6N M 풀이 방법문제 읽자마자 `벽 뚫고 이동하기` 문제가 생각났고 풀이 방법은 생각보다 쉽게 구할 수 있었음또한 경로의 합이 N*T이기 때문에 long 타입을 사용했음→ 다익스트라 + DP 근데 제출 과정에서 이슈가 몇 가지 있었는데, 처음에는 메모리 초과가 나서 왜그런지 몰랐음 시간 초과메모리 초과 내가 객체로 만들기 귀찮아서 long[], int[]로 큐에 넣어서 메모리 초과가 나는 거였음생각보다 배열이 잡아먹는 메모리 크기가 크다고 생각했다. 그래서 POJO로 변경했음 시간 초과 문제는 이미 최소값보다 큼에도 갱신하려고 시도했기 때문인..
-
백준 4883번 삼각 그래프 JAVA알고리즘 2025. 10. 22. 14:14
요구사항 정의처음 정점에서 경로를 이동하며 마지막 정점까지 가는 최소 비용을 구하기정점을 지날 때마다 비용이 추가됨제약 조건2 풀이 방법N이 10^5이므로 가장 먼저 생각난 풀이는 DP였다.pull 방식과 push 방식 중에서 push 방식으로 풀었는데 틀렸다 push 방식은 정점 u가 v와 연결되어있을 때, u에서 v를 갱신하는 방식이다.pull 방식은 정점 u가 v와 연결되어있을 때, v에서 u를 참조해서 갱신하는 방식이다. push 방식의 경우 `순서 보존`이 안된다는 단점이 있었다.이 문제는 단순히 i에서 i+1을 갱신하는 것이 아니라, 같은 i에서도 갱신이 일어났기 때문에 i를 전부 갱신하고 i+1을 갱신해야했지만 그 사실을 간과했다. push 방식으로 풀 수도 있지만 pull 방식으로 풀게되면..
-
Props vs State카테고리 없음 2025. 10. 19. 22:19
둘다 React에서 값을 관리하는 방법 Props부모가 관리하고 읽기 전용내가 직접 변경하지 않고 부모 컴포넌트에서 준 값을 그대로 반영해야할 때State내가 관리하고 변경 가능(useState)내가 직접 변경하는 경우 예시를 들어보자`컴포넌트 A`는 페이지 컴포넌트이고 `컴포넌트 B` 는 버튼 컴포넌트일 때 예시 1) 버튼을 누르면 화면에 로딩 중이 발생함 → 화면의 변경이 일어나는 것이므로 컴포넌트 A에 State 예시 2) 버튼을 누르면 버튼이 비활성화됨 → 버튼의 변경이 일어나는 것이므로 컴포넌트 B에 State 예시 3) 버튼을 누르면 화면에 로딩이 생기면서 비활성화됨 → 둘다 변경이 일어나는 것이므로 컴포넌트 A에 State→ 이런 현상을 `Lifting State Up`이라고 한다. 둘다..