본문 바로가기

the others/Algorithm13

자료구조 / 알고리즘 공부할 때 유의할 점 📍 공부하면서 스스로한테 지속적으로 던져야하는 질문들 자료구조 ✅ 자료 구조 안에 있는 데이터들의 순서가 보장이 되는가? ✅ 중복된 데이터가 들어갈 수 있는가? ✅ 검색할 때 얼마나 효율적인가? ✅ 내가 원하는 기능을 수행하기 위해 데이터를 수정해야할 때 얼마나 효율적인가? 알고리즘 ✅ Input(매개 변수)의 사이즈가 커질수록 O(n)은 어떻게 변화하는가? ✅ 작성한 코드의 시간 복잡도와 공간 복잡도는 어떠한가? ✅ 선택한 자료구조가 해당 알고리즘 문제를 풀기에 적절한가? 문제 푸는 skill 01 UNDERSTAND THE PROBLEM 02 CONCRETE EXAMPLES 03 BREAK IT DOWN 04 SOLVE OR SIMPLIFY 2021. 9. 1.
재귀함수 Recursion Achivement Goals ✅ 재귀의 의미에 대해서 이해하고, 자바스크립트에서 재귀 호출을 할 수 있다. ✅ 재귀를 언제 사용해야 하는지 알고 있다. ✅ 재귀적 사고 연습을 통해 재귀 함수를 base case와 recursive case로 나눠서 작성할 수 있다. ✅ 자료 구조 중 Tree 구조에 재귀 함수를 사용하는 이유를 이해할 수 있다. ✅ 실생활에 사용되는 유용한 Tree 구조를 알고 있다. ✅ 깊이를 알 수 없는 Tree 구조에 재귀 함수를 활용하여 모두 순회(traverse)할 수 있다. 📌 재귀란? 어떤 문제를 해결할 때, 동일한 구조의 더 작은 문제를 해결함으로써 주어진 문제를 해결하는 방법이다. --> 처음 접했을 때는 이게 무슨말이야 ...? 했는데 공부해보니까 알겠다. --> 코드.. 2021. 8. 30.
자바스크립트 프로그래머스 프린터 문제 풀이 📌 문제 ◾ 해설 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린터를 개발했습니다. 이 새롭게 개발한 프린터는 아래와 같은 방식으로 인쇄 작업을 수행합니다. 1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 2. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다. 3. 그렇지 않으면 J를 인쇄합니다. 예를 들어, 4개의 문서(A, B, C, D)가 순서대로 인쇄 대기목록에 있고 중요도가 2 1 3 2 라면 C D A B 순으로 인쇄하게 됩니다. 내가 인쇄를 요청한 문서가 몇 번째로 인쇄.. 2021. 8. 24.
자바스크립트 Math.sqrt( ) 사용하지 않고 제곱근 구하기 📌 바빌로니아 방법 Babylonian method 여기서 Xn은 말 그대로 근사값이다. S에 루트를 씌운 값에 가장 가까울 거라 생각하는 근사값을 넣어주면 된다. 어떤 값을 넣든지 점화식을 반복하다보면 결국, Xn+1이 S의 제곱근에 근접하는 순간이 온다. (그치만 그게 언제일지는 보장못함) 📌 코드로 구현하기 ◾ 초기안 수도 코드 ◾ 코드 구현 값은 잘 나오는데 ... 구체적으로 코드가 어떻게 구동하는 지 궁금했다. ◾ 문제점 근사값이 점점 원래값의 제곱근에 가까워지는 걸 확인할 수 있었다. 그런데 ... 근사값은 결국 3.xxxxxxxxxxx 형식을 넘지 못한다. 그리고 9같이 제곱근이 정수로 떨어지는 숫자 이외의 값을 입력받으면 while문이 무한반복될게 뻔하다. 무한반복을 끊어줄 break문이 .. 2021. 8. 17.