https://www.acmicpc.net/problem/1914 하노이탑 규칙한 번에 하나의 원반만 이동할 수 있다.큰 원반이 작은 원반 위에 올려져서는 안 된다.원반은 항상 세 개의 막대 중 하나에 있어야 한다.하노이탑 알고리즘의 동작 원리는 다음과 같다. n-1개의 원판을 1번에서 2번 막대로 옮긴다2. n번째 원판을 3번 막대로 옮긴다3. n-1개의 원판을 2번에서 3번 막대로 옮긴다이는 크게 세 가지의 동작"n-1개를 start(시작막대)에서 6-start-end(보조막대) 로 옮기고" "남은 1개를 start(시작막대)에서 end(도착막대)로 옮기고" "n-1개를 6-start-end(보조막대) 에서 end(도착막대)로 옮기는" 것으로 나눌 수 있다. 재귀를 사용하여 N개의 원반 문제를 n-..
재귀0. 기본 개념Python 개발자로서 면접 준비를 할 때, 재귀 함수에 대한 질문을 자주 받게 됩니다. 주로 다음과 같은 질문들이 있을 수 있습니다:재귀 함수란 무엇인가?재귀 함수는 자기 자신을 호출하여 원래 문제의 더 작은 하위 문제를 해결하는 함수입니다. 이를 통해 문제를 반복적으로 분해하다가, 더 이상 분해할 수 없는 기본 조건(base condition)에 도달하면 함수 호출을 종료합니다.재귀 함수의 장점과 단점은 무엇인가?장점:코드가 반복적인 구조를 가진 문제(예: 특정 패턴의 탐색)를 간결하게 작성할 수 있습니다.문제를 작게 나누어 해결하는 경우 구현이 상대적으로 단순해집니다.단점:잘못된 구현이나 불필요한 깊이의 호출이 발생하면 성능이 저하될 수 있습니다.깊은 재귀 호출로 인해 프로그램이 ..
문제 1: 숫자의 각 자리수를 거꾸로 나열하기문제 설명:양의 정수 n이 주어졌을 때, n의 각 자리수를 재귀를 사용하여 거꾸로 나열한 값을 반환하는 함수를 작성하세요. 예시 입/출력:- 입력: `n = 12345` - 출력: `54321` 설명:정수 12345를 재귀적으로 처리하여 54321이 반환됩니다. 제한 사항:- n은 1 이상 1,000,000 이하의 자연수입니다. solutiondef sol(n): if n 0: return prev + str(cnt) return "" curr = word[i] if curr == prev: cnt += 1 else: if prev is not None: result = prev + str(cnt) else: result = "" return result + ..
JS의 변수 생성 과정자바스크립트 엔진은 변수 선언을 다음과 같은 단계에 거쳐 수행한다.1. 선언 (실행 컨텍스트에 등록하여 자바스크립트 엔진에 변수의 존재를 알린다) => 스코프가 참조2. 초기화 (메모리에 공간 확보, undefined를 할당하여 초기화)3. 할당 (실제 값 할당) 실행 컨텍스트실행 컨텍스트는 코드가 실행되기 위해 필요한 환경. - 모든 JavaScript 코드는 실행 컨텍스트에서 실행되며, 실행 컨텍스트는 코드 실행에 필요한 환경 정보를 제공한다.- 자바스크립트 엔진은 실행 컨텍스트를 관리하며 선언된 코드가 등록됨.- 실행 컨텍스트는 코드가 실행되기 전 메모리에 변수를 할당하고 실행할 준비를 마친다. JS 엔진은 코드를 실행하기 전 코드를 형상화하고 구분하는 과정을 거친다.즉, 자..
Promise비동기 작업을 순차적으로 실행하기 위하여 사용되는 객체 그러나 단지 callback함수 대신 보기 쉽게 만들어주는 것. 실행되지 않았지만 결과를 받는 처리(약속) - 상태: 3가지 1. Pending (대기) 2. Fulfilled (완료) 3. Rejected (실패) - then, catch, finally 3가지 메서드를 가진다.then : promise 객체가 fulfilled 상태가 되면 실행할 콜백함수를 등록하는 메서드catch : promise객체가 rejected 상태가 되면 콜백함수를 등록하는 메서드finally : 어떤 작업의 성공, 실패 여부와 상관없이 항상 실행하고 싶은 콜백함수를 등록 new Promisenew Promise 란 ? - promise 객체를 직접 생성할..
목차질문실전 문제질문1. 스택을 이용하여 주어진 문자열을 뒤집는 알고리즘을 설계하고 구현해 보세요.이 알고리즘의 시간 복잡도와 공간 복잡도는 각각 어떻게 되나요? 스택을 사용하지 않고도 문자열을 뒤집을 수 있는 다른 방법을 설명해 보세요.- **stack 을 이용한 방법** : 주어진 문자열을 스택에 넣고, 스택에 넣은 문자열을 다시 꺼내면서 새로운 문자열을 만든다. - 시간복잡도 : 문자열의 각 문자를 한 번씩 처리하므로,m n은 문자열의 길이. - 공간복잡도 : 스택에 모든 문자를 저장하므로 O(n)의 공간 필요- **그 외 방법** : reversed 함수를 이용한다 (추후 .join()으로 각 문자열 연결 필요)2. 스택이 재귀적인 함수 호출과 어떻게 관련이 있는지 설명해 보세요.재..