본문 바로가기
728x90

알고리즘2

순열 (Permutation) 지인이 코딩 문제를 공유해줬는데 순열에 대한 알고리즘 문제가 있어서 다시 한번 리마인드 할 겸 글로 정리 한번 해보려고 한다. 순열 알고리즘 이란? N개의 서로 다른 값이 주어지고 값 중에서 R개의 숫자를 뽑아서 정렬하는 알고리즘이다. 이 내용은 다른 알고리즘과 중복되긴 하는데 순열에서 중요한 건 정렬이 된다는 것이고 순서가 존재한다는 점이다. 예를 들어 [1, 2] =! [2, 1]은 다른 값이기에 둘 다 카운팅이 된다. 주어진 값 = [1, 2, 3] 이라면 순열을 하여 2개 뽑아낸 값은 [1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2] 이렇게 총 6개가 나와야 한다는 것이다. 자바 코드 구현 @Test public void 순열() { int r = 2; int[] inpu.. 2022. 11. 28.
동적 계획법 (DP, Dynamic Programing) & 메모이제이션(Memoization) 모 회사의 개발자 분과 밥을 먹었는데 요즘 시니어 개발자 구하기가 힘들다며 한탄 섞인 말을 하셨고 그 회사의 면접관이기도 하셨다. 나는 "시니어 개발자 기술면접 때 뭘 중점적으로 질문하는가?" 대한 질문을 하였고 알고리즘 설계에 대한 질문과 시스템에 트래픽이 몰려 부하가 걸리는 것을 대비하는 아키텍처에 대해 질문을 하신다고 한다. 시스템 아키텍처에 대해서는 다들 경험이 있다 보니 다양한 방식으로 구성을 하는데 알고리즘 설계 질문 때 DP와 메모이제이션에 대한 질문을 하면 개념을 모르는 사람이 많다고 하셨다. 그래서 블로그에 정리해가며 공부해보려고 한다. 동적 계획법(DP, Dynamic Programming)이 대체 뭐야? 주어진 큰 문제를 여러 개의 작은 문제 단위로 나누어 풀려고 하위 작은 문제들의 .. 2022. 11. 13.
300x250