[JAVA] 하노이의 탑 (Tower of Hanoi)
자료구조 & 알고리즘/알고리즘2023. 2. 3. 00:24[JAVA] 하노이의 탑 (Tower of Hanoi)

Do it! 자료구조와 함께 배우는 알고리즘 입문[자바편] 연습문제와 실습문제입니다. 하노이의 탑 설명 1, 2, 3번 기둥 이렇게 3개의 기둥과 크기가 모두 다른 n개의 원판이 있을 때, n개의 원판 모두 1번 기둥에 크기가 큰 원판순으로 아래에 위치되어 있다. 이러한 기둥들을 3번 기둥에 모두 옮겨야 하는데, 한 번에 한 원판만 옮길 수 있고 크기가 작은 원판 위에 크기가 큰 원판을 올릴 수 없다. 이러한 원판 이동을 최소한의 횟수로 옮기는 것이 하노이의 탑의 규칙이다. 하노이의 탑 풀이 가장 위에 있는 원반을 1번원반, 그 아래의 원반을 2번 원반, 가장 아래에 있는 원반을 n번 원반이라고 하면 디테일한 과정 말고 큰 과정을 나열하면 3가지로 압축할 수 있다. 1 ~ n-1번 원반을 2번 기둥에 옮..

[JAVA] 꼬리 재귀(Tail Recursion)(꼬리 재귀 최적화(TCO))
자료구조 & 알고리즘/알고리즘2023. 2. 2. 00:39[JAVA] 꼬리 재귀(Tail Recursion)(꼬리 재귀 최적화(TCO))

일반 재귀 간단 요약 재귀 함수는 정지 조건(재귀 앵커)을 충족하기 전 까지 계속 호출하게 된다. 그러면 함수가 한 번씩 호출될 때마다 파라미터, 리턴값, 리턴 후 돌아갈 위치 등이 스택(메모리 저장공간)에 쌓이게 된다. 재귀 함수를 너무 많이 호출하게 되면 스택의 공간이 모두 차버리는 스택 오버플로가 일어날 수 있다. 꼬리 재귀 static int factorial(int n) { if(n > 0) return n * factorial(n-1); //반환(return)부에 연산이 존재 else return 1; //정지 조건 } 위 코드는 일반 재귀를 이용하여 팩토리얼을 구하는 재귀함수이다. 위 코드는 정지 조건을 충족한 재귀 함수가 1을 리턴을 해야 나머지 재귀 함수의 리턴 값이 정해진다. 아래의 첫..

[JAVA] 재귀 알고리즘의 비재귀적 표현
자료구조 & 알고리즘/알고리즘2023. 2. 1. 00:27[JAVA] 재귀 알고리즘의 비재귀적 표현

Do it! 자료구조와 함께 배우는 알고리즘 입문[자바편] 연습문제와 실습문제입니다. 재귀 알고리즘의 비재귀적 표현 static void recur(int n) { if(n > 0) { recur(n - 1); System.out.println(n); recur(n-2); } } 위 메소드의 꼬리 재귀를 제거하는 방법과 비재귀적 표현으로 나타내는 방법을 정리하려고 한다. 꼬리 재귀의 제거 메소드의 꼬리에서 재귀 호출하는 메소드 recur(n-2)는 파라미터로 n-2를 전달하여 recur 메소드를 호출한다는 뜻이다. 따라서 이 호출은 'n의 값을 n-2로 업데이트하고 메소드의 시작 지점으로 돌아간다'는 뜻이다. 아래는 위 방법을 그대로 구현한 코드이다. n의 값을 -2만큼 감소한 후 메소드의 시작 지점으로..

금융용어정리 - 주식 거래시간
금융 & 경제2023. 1. 31. 11:09금융용어정리 - 주식 거래시간

본 게시글은 유튜브 : 경제 TV 너무경 : 너무 쉬운 경제 윤성종 님의 유튜브 영상을 참고하였습니다. 개인적으로 정리하는 글임을 알립니다. 금융용어정리 - 주식 거래시간 주식 거래시간 전날 종가가 9,000원이었고, 오늘 종가가 10,000원이라면 08:30~08:40 : 전일 종가(9,000원)로 거래 가능 08:30~09:00 : 장 시작 전 동시호가매매시간 09:00~15:30 : 정규시장 15:20~15:30 : 장 마감 후 동시호가매매시간 15:30~16:00 : 당일 종가(10,000원)로 거래 가능 16:00~18:00 : 10분에 한번씩 당일 종가 ±10%가격(9,000~11,000원)으로 거래 가능

[JAVA] 재귀 알고리즘 분석(하향식, 상향식 분석)
자료구조 & 알고리즘/알고리즘2023. 1. 31. 00:38[JAVA] 재귀 알고리즘 분석(하향식, 상향식 분석)

Do it! 자료구조와 함께 배우는 알고리즘 입문[자바편] 연습문제와 실습문제입니다. 재귀 알고리즘을 분석하는 방법은 아래의 두가지가 있다. 하향식(top down) 분석 방법 상향식(bottom up) 분석 방법 아래의 코드를 바탕으로 하향식과 상향식 분석 방법을 정리하겠다. static void recur(int n) { if(n > 0) { recur(n-1); System.out.println(n); recur(n-2); } } 위 메소드에 파라미터에 4를 넘기면 아래와 같은 결과가 나온다. 하향식 분석 파라미터에 4를 넘기면 recur 메소드는 아래 과정을 순서대로 실행한다. ① recur(3)을 실행 ② 4를 출력 ③ recur(2)를 실행 아래의 그림에서 상자는 recur 메서드의 동작을 나..

[JAVA] 팩토리얼 , 최대공약수 구하는 알고리즘 - 재귀 기초
자료구조 & 알고리즘/알고리즘2023. 1. 30. 00:52[JAVA] 팩토리얼 , 최대공약수 구하는 알고리즘 - 재귀 기초

Do it! 자료구조와 함께 배우는 알고리즘 입문[자바편] 연습문제와 실습문제입니다.재귀란 어떤 사건이 자기 자신을 포함하고 다시 자기 자신을 사용하여 정의될 때 재귀적(Recursive)이라고 한다.재귀는 직접 재귀와 간접 재귀로 나뉜다.직접 재귀 : 메소드 a가  자신(메소드 a)을 호출간접 재귀 : 메소드 a가 메소드 b를 호출하고, 메소드 b는 메소드 a를 호출재귀 메소드는 정지조건(재귀 앵커)을 제대로 설정하지 않으면 무한 루프와 같이 끝없이 재귀 메소드가 호출되므로 유의하여야 한다. 팩토리얼 구하기음이 아닌 정수 n의 팩토리얼(n!)은 아래처럼 재귀적으로 정의할 수 있다.0! = 1n > 0 이면 n! = n * (n-1)!위의 정의를 그대로 구현하면 아래와 같다.static int facto..

금융용어정리 - 공매도, 대주거래, 대차거래, 대차잔고, 대차잔액
금융 & 경제2023. 1. 29. 13:39금융용어정리 - 공매도, 대주거래, 대차거래, 대차잔고, 대차잔액

본 게시글은 유튜브 : 경제 TV 너무경 : 너무 쉬운 경제 윤성종 님의 유튜브 영상을 참고하였습니다. 개인적으로 정리하는 글임을 알립니다. 금융용어정리 - 공매도, 대주거래, 대차거래, 대차잔고, 대차잔액 공매도 주식을 빌려서 미리 판 후에 주식으로 되갚아야 하는 매도 공매도는 주가가 하락할 것을 예상하는 경우에 실행한다. 수익은 최대 100%까지이고 손해는 무한대로 클 수 있다. 예를 들어 ㈜코딩의 주가가 현재 10,000원이고, A씨는 ㈜코딩의 주식을 1주 갖고 있다. B씨는 A씨에게 ㈜코딩의 주식 1주를 빌리고 한 달 뒤에 갚기로 했다. B씨는 ㈜코딩의 주식을 만 원에 매도해서 현재 현금 만 원을 보유하고 있다. 이때 두 가지의 경우가 있다. ㈜코딩의 주가가 하락했을 때 한 달뒤, A씨에게 빌린 ..

금융용어정리 - 따상
금융 & 경제2023. 1. 29. 12:58금융용어정리 - 따상

본 게시글은 유튜브 : 경제 TV 너무경 : 너무 쉬운 경제 윤성종 님의 유튜브 영상을 참고하였습니다. 개인적으로 정리하는 글임을 알립니다. 금융용어정리 - 따상 따상 따상은 아래의 조건을 만족하는 경우를 칭하는 속어이다. 시가가 공모가(주식시장에 최초로 상장될 때의 주식 한 주당 가격)의 두 배가 된 경우 종가가 시가의 +30%인 경우 시가 장 시작전 동시호가매매시간이 끝남과 동시에 시가가 결정된다. 시가는 시초가라고 부르기도 한다. 주식 시장에서 주가는 최대 30% 상승 또는 하락할 수 있다. 이는 동시호가도 마찬가지이다. 하지만 한 가지 예외가 있는데, 처음 상장하는 날은 동시호가가 -10% ~ 100%까지 하락 또는 상승이 가능하다. 예를 들어 공모가 5,000원으로 상장하고 장 시작전 동시호가매..

image