티스토리 뷰
오늘은 재귀함수의 기초 예제인 팩토리얼 구하기 문제를 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!값을 출력할 수 있습니다. 제출 결과는 아래와 같습니다.
'알고리즘 정보 > Swift 알고리즘' 카테고리의 다른 글
swift Character, 아스키코드 asciiValue값 출력하는 방법들 (0) | 2021.01.28 |
---|---|
swift언어 배열 stack 활용, 백준 10828 스택 문제풀이 (0) | 2021.01.26 |
swift 기초반복문 while문 활용, 백준 더하기사이클 문제풀이 (0) | 2021.01.20 |
swift 반복문 기초 for/forEach, 백준 구구단 출력 문제풀이 (0) | 2021.01.18 |
swift if 조건문/삼항연산자 활용, 두 수 비교하기 문제풀이 (0) | 2021.01.17 |
- Total
- Today
- Yesterday
- 프로그래머스swift
- 김프매매
- Protocol
- swift알고리즘
- 개발자문서
- 알고리즘문제
- swift언어
- swift reduce
- Swift 알고리즘
- CoreML
- swift문제
- swift 기초
- swift 문자열
- createML
- ios
- swift string
- swift
- 백준알고리즘
- 자연어처리
- 프로토콜
- 백준swift
- 프로그래머스
- Collection
- 부스트코스
- publisher
- SwiftUI
- uikit
- 컬렉션
- 스위프트
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |