전체 글
-
[Algorithm: 그래프] 프로그래머스 <순위>Algorithms 2026. 6. 4. 17:10
문제https://school.programmers.co.kr/learn/courses/30/lessons/49191?language=java 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 설명n명의 선수가 있고, 일부 경기 결과만 주어질 때 정확하게 순위를 매길 수 있는 선수의 수를 구하는 문제다.핵심 조건은 "실력이 좋으면 항상 이긴다"는 것이다. 즉 A가 B를 이기고, B가 C를 이기면 A는 C도 반드시 이긴다. 접근어떤 선수의 순위를 정확히 알 수 있으려면, 그 선수와 나머지 모든 선수 간의 승패 관계가 전부 파악되어야 한다.n명 중에서 자신을 제외한 n-1명 전원과 비교가 가능하면 순위를 확정할 수..
-
코드폴리오 성능개선: GitHub API 98번 동기 호출을 3초로 줄이기Spring 2026. 6. 3. 19:52
문제 발견GitHub 연동으로 사용자의 기술 스택을 자동으로 동기화하는 syncSkills() API가 있었다. 기능은 정상 동작했지만 응답이 오래 걸린다는 느낌이 있어 실제로 측정해봤다.System.currentTimeMillis()로 각 단계별 시간을 직접 찍어봤다.long reposApiStart = System.currentTimeMillis();List repos = githubService.getRepositories(accessToken);long reposApiTime = System.currentTimeMillis() - reposApiStart;for (GithubRepoResponse repo : repos) { long langApiStart = System.currentTim..
-
[Software Engineering] Fundamentals of TestingCS/Software Engineering 2026. 5. 26. 17:27
"코드가 동작한다"는 것과 "코드가 올바르다"는 것은 다르다. 소프트웨어 테스팅은 단순히 실행해보고 결과를 확인하는 행위가 아니라, 제품의 품질에 대한 정보를 체계적으로 수집하는 조사 활동이다. 이번 글에서는 테스팅이 왜 필요한지, 왜 어려운지, 그리고 어떤 기법들이 있는지를 정리한다. Testing과 V&V소프트웨어 개발 생명주기(SDLC)에서 테스팅은 완성된 제품이 제대로 됐는지 확인하는 단계다. 이 과정을 Software Validation & Verification, 줄여서 V&V라고 한다.Validation: 우리가 올바른 제품을 만들고 있는가? (요구사항에 부합하는가)Verification: 우리가 제품을 올바르게 만들고 있는가? (명세대로 구현됐는가) 소프트웨어 테스팅의 공식 정의는 이렇..
-
[Algorithm: 해시] 프로그래머스 <의상>Algorithms 2026. 5. 18. 15:32
Hash 조합론 Java Programmers Lv.2문제https://school.programmers.co.kr/learn/courses/30/lessons/42578?language=java 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 설명의상의 종류별로 최대 1개씩 착용할 수 있고, 최소 1개는 입어야 한다. 가능한 서로 다른 의상 조합의 수를 구하는 문제다.clothesreturn[["yellow_hat","headgear"],["blue_sunglasses","eyewear"],["green_turban","headgear"]]5[["crow_mask","face"],["blue_sungla..
-
[Algorithm: 큐] 프로그래머스 <다리를 지나는 트럭>Algorithms 2026. 5. 17. 16:26
스택/큐 시뮬레이션 Java Programmers Lv.2문제https://school.programmers.co.kr/learn/courses/30/lessons/42583?language=java 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 설명일차선 다리에 트럭이 순서대로 진입한다. 다리는 최대 bridge_length대의 트럭을 수용하고, 무게 합이 weight를 초과하면 안 된다. 모든 트럭이 다리를 건너는 데 걸리는 최소 시간을 구하는 문제다.경과 시간다리를 지난 트럭다리 위대기0[][][7,4,5,6]1~2[][7][4,5,6]3[7][4][5,6]4[7][4,5][6]5[7,4][5][6..
-
[Algorithm: 큐] 프로그래머스 <프로세스>Algorithms 2026. 5. 17. 00:17
스택/큐 Java Programmers Lv.2문제https://school.programmers.co.kr/learn/courses/30/lessons/42587?language=java 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 설명실행 대기 큐에서 프로세스를 꺼낼 때, 큐에 우선순위가 더 높은 프로세스가 남아 있다면 다시 큐에 넣는다. 그렇지 않으면 실행한다. 특정 프로세스(location)가 몇 번째로 실행되는지 구하는 문제다.prioritieslocationreturn[2, 1, 3, 2]21[1, 1, 9, 1, 1, 1]05[2, 1, 3, 2] → C(우선순위 3)가 가장 높으므로 먼저..
-
[Algorithm: DFS] 프로그래머스 <퍼즐 조각 채우기>Algorithms 2026. 5. 13. 17:10
DFS 구현 Java Programmers Lv.3문제https://school.programmers.co.kr/learn/courses/30/lessons/84021?language=java 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 설명game_board의 빈칸(0)에 table의 퍼즐 조각(1)을 맞춰 넣는 문제다. 조각은 회전이 가능하고, 빈칸과 조각의 모양이 정확히 일치할 때만 채울 수 있다. 최대한 많은 칸을 채웠을 때의 총 칸 수를 구한다.핵심 규칙: 새로 채워 넣은 조각과 인접한 칸이 비어있으면 안 된다.즉, 빈칸의 모양과 조각의 모양이 완전히 일치해야 채울 수 있다. 전체 풀이 전..
-
[Algorithm: DFS] 프로그래머스 <단어 변환>Algorithms 2026. 5. 2. 15:43
DFS 백트래킹 Java Programmers Lv.3문제https://school.programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 설명단어 begin에서 target으로 변환하는 최소 단계를 구하는 문제다. 단, 한 번에 한 글자만 바꿀 수 있고, 변환 결과는 반드시 words 목록에 있는 단어여야 한다.begintargetwordsreturnhitcog["hot","dot","dog","lot","log","cog"]4hitcog["hot","dot","dog","lot","log"]0hit → hot → dot →..