티스토리 뷰

반응형

 

 

 

오늘은 재귀함수의 기초 예제인 팩토리얼 구하기 문제를 swift언어를 사용해서 풀어보겠습니다. 

팩토리얼은 3! 과 같은 식으로 표현하며, 3!은 1 * 2 * 3 = 6이 됩니다. 곧바로 백준 10872번 팩토리얼 문제 풀어보겠습니다. 

 

 

 


백준 10872 팩토리얼 swift 문제설명

10877 팩토리얼 문제는 말 그대로 팩토리얼 값을 구하는 문제입니다.

 

 

 

 

제한시간은 1초로, 1억번의 연산횟수 이내로 문제를 해결해야한다는 생각으로 풀면 되는데요. 해당 문제의 입력 범위와 복잡도를 감안할때 시간제한을 크게 고려할만한 문제는 아닙니다. 

 

 

 

 

팩토리얼 N!를 구해야할 때, N을 입력받으면 되는데요. 입력 범위 N은 0이상, 12이하입니다. N이 최대 12이므로, 재귀함수는 최대 12번까지만 호출하면 되고, 시간복잡도 부분에서 시간초과 날 요소는 없을 것 같습니다. (재귀함수의 기저조건만 잘 설정해 주면 되겠죠.)

 

곧바로 재귀함수를 활용해서 해당 문제, 팩토리얼 풀어보겠습니다.

 

 

 

 


백준 10872 팩토리얼 swift 알고리즘 문제풀이

먼저 곧바로 재귀함수 호출에 사용할 함수체를 선언합니다. factorial로 이름을 지었구요. N을 인자로 받아서 N이 0이 될때까지 재귀함수를 호출하게 됩니다. 가령 N이 3이 들어오면, (3 * (2 * (1 * (1)))) -> 6이 출력되게 됩니다.

만약 재귀함수의 호출순서가 이해가지 않으신다면 재귀함수 내부에 print()문을 사용해서 호출되는 함수의 인자값을 확인해보시기 바랍니다. 

 

 

 

 

 

N을 입력받습니다. readLine()은 기본적으로 String? 옵셔널타입을 반환하기 때문에 강제언래핑와 Int형 강제변환으로 정수값을 추출합니다. 그리고 앞서 구현한 factorial 함수를 호출, 재귀함수를 실행하면 N!값을 출력할 수 있습니다. 제출 결과는 아래와 같습니다.

 

 

 

 

 

 

 

 

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함