목록프로그래밍/백준 알고리즘 (11)
말랑말랑제리스타일
백준11729번 문제는 하노이탑 이동 순서 문제입니다. 하노이탑 이동 문제는 대표적인 재귀함수로 풀기 쉬운 문제이며, 재귀함수를 이해하기에도 좋은 문제입니다. 자 그럼 여기서 하노이탑 문제란 뭐냐? 다들 이런식으로 생긴 장난감 본적 있을겁니다. 왼쪽처럼 생긴 모양을 오른쪽 모양으로 옮기는 문제이며, 여기서 작은 원판 위에는 큰 원판이 올 수 없습니다. 기본적인 하노이탑 이동 문제의 이동 규칙이며, 백준 알고리즘 11729 문제는 이 하노이탑에서 원판을 이동하는 순서와 전체 이동 횟수를 출력하는 문제입니다. 일단 파이썬으로 작성된 코드부터 보고 본격적으로 코드 및 문제 설명 들어갑니다 백준 11729 답안 파이썬 코드 def movement(n,f,e,t,Arr): #f에서 t로 이동한다 e는 비어있는 공..
재귀함수(Recursion)의 정의 재귀함수의 재귀는 한자로 두번 재에 돌아올 귀자를 써서 再歸 라고 표현됩니다. 영어로는 Recursion이라고 표현합니다. 실제 코드에서는 어떤 함수 안에서 그함수 자신을 호출하는 함수를 재귀함수(Recursion)라고 표현합니다. 재귀함수 구현방법 재귀함수의 요건 종료조건(기저조건) 재귀함수에서 필수적인 요소가 바로 종료조건입니다. 아래 코드에서 종료조건이라고 주석처리한 라인이 없다면 무한히 루프를 돌다가 결국 스택오버플로우를 일으키고 프로그램이 죽습니다. 그래서 어느 조건에 도달하면 이 함수를 끝낸다는종료조건을 넣어주어야 합니다. func recursive(){ func recursive() if(종료조건) //종료조건 return //종료조건 } 분할정복 재귀함..
백준 알고리즘 1008번 문제 C++ 풀이입니다 먼저 사칙연산 문제가 난이도가 쉽지만 나눗셈의 특성상 곱셈, 덧셈, 뺄셈과 달리 결과가 정수가 아닌 소수가 나오게 됩니다 그리고 일반적인 나눗셈에서는 0으로 나누는 예외처리를 해줘야하지만 문제에 명시된 것처럼 백준 알고리즘 1008번 문제 연산에 사용되는 A와 B는 모두 0보다 크기 때문에 이 상황에 따른 예외처리는 필요없습니다 대신 출력단에서 %f로 출력하면 결과가 소수점 6자리까지 출력되는데 오차가 10^(-6) 수준이 되고 10^(-10)으로 해줘서 오차를 줄이기 위해 %.10lf로 출력을 해줘야하죠 이렇게 double a와 b를 10자리까지 출력해주려면 아래와 같은 코드로 백준알고리즘 1008번 문제를 풀 수 있습니다 백준 알고리즘 1008번 답 #..