재귀
[프로그래머스]쿼드압축 후 개수 세기 - Java
문제 https://school.programmers.co.kr/learn/courses/30/lessons/68936 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 분할 정복의 아주 대표적인 문제임! 백준에도 엄청 비슷하거나 완전 똑같은 문제가 있었던 걸로 기억하는데 맞을걸??? 암튼 지금 범위의 배열을 압축할 수 있는지 없는지 판단하는 check() 함수 - x좌표, y좌표, 현재 단계의 배열 length를 이용해서 검사 check()를 통과했으면 압축할 수 있다는 뜻이므로 return, 그렇지 않으면 4분할해서 다시 재귀로 검사!(마찬가지로 x..
[CS스터디]220707 자료구조 - 3
BST의 최악의 경우의 예와 시간복잡도에 대해서 설명해주세요. 한쪽으로 몰리는 경우(계속해서 작은 수가 들어오는 경우, 계속해서 큰 수가 들어오는 경우)가 최악의 경우 평균적으로는 O(logN)인 시간 복잡도가 이 경우엔 O(N)으로 증가함! 피보나치 수열을 코드로 구현하는 방법에 대해서 설명해주세요. 재귀 or 동적 계획법(탑다운, 바텀업 방식이 있음) 재귀 단순한 재귀로 구현할 경우, 시간 복잡도가 너무 크게 나올 수 있기 때문에 동적 계획법을 활용하여 구현하는게 좋음 ! 동적 계획법 Top-Down 말 그대로 위에서 아래로 진행하면서 답을 구하는 방식, 흔히 재귀 호출을 이용해 구현. 100번째 피보나치 수를 찾기 위해 99번째, 98번째 수를 찾고, 그들을 찾기 위해 97번쨰, 96번째 수를 찾는..
[프로그래머스]피로도 - Java
문제 https://programmers.co.kr/learn/courses/30/lessons/87946 코딩테스트 연습 - 피로도 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던 programmers.co.kr 풀이 재귀를 활용한 DFS로 완전 탐색을 해줌! 조건에 맞으면(탐험하지 않은 던전이고, 최소 피로도보다 많은 피로도가 남아 있으면) 다음 단계로 넘겨줌 다음 단계로 넘기기 전에 방문 처리를 해주고 다음 단계를 갔다 오면 다시 방문 처리를 해제해줌! 재귀 함수의 깊이(depth)와 answer를 비교해서 최대값을 answer에 갱신해줌! 자세한건 주석..