티스토리 뷰
문제의 상황은 간단합니다
정수가 하나 주어지고(n 이라 하겠습니다), n이 어떤 양의 정수(x라 하겠습니다)의 제곱인지 아닌지 판단합니다.
주어진 정수 하나가 양의 정수 x 의 제곱에 해당한다면 이 x +1 의 제곱을 리턴하고,
n이 양의 정수 x의 제곱이 아니라면 -1 을 리턴하는 함수를 만드는 것입니다.
숫자를 넣어보면 간단합니다.
100 이 주어지고, 100이 어떤 양의 정수의 제곱인지 아닌지 판단합니다.
100 이 어떤 양의 정수의 제곱에 해당한다면 그 양의 정수에 1을 더한 값에 제곱을 리턴하고,
100 이 어떤 양의 정수의 제곱에 해당하지 않는다면 -1 을 리턴합니다.
100은 10의 제곱이라는걸 우리는 알고 있기 때문에, 이를 활용하여 다시 작성해봅니다.
100 이 주어지고 100은 10의 제곱입니다.
100 이 10의 제곱에 해당되기 떄문에 10에 1을 더한 값의 제곱, 즉 11의 제곱인 121을 리턴합니다.
(100에 대해서는 해당하지 않는 부분입니다)
문제에 대한 이해는 이정도면 충분할 것 같습니다.
음.. sqrt() 함수를 알았다면 좀 더 쉽게 풀었겠지만, 모르는 상태라 가정하고 풀어보겠습니다.
1. 제곱을 했을 때, 파라미터로 주어진 n과 같아야 하니 1부터 n까지 확인을 해야한다. 반복문을 사용하자.
2. 단 제곱 수가 파라미터로 주어진 n 보다 커지면 의미가 없기 때문에, break 를 활용하여 반복문을 종료한다.
3. 만약 반복문을 돌리다가 반복문의 상수 i 의 제곱이 n 과 같게 된다면 상수 i에서 +1 한 값을 두 번 곱한 값을 리턴한다.
4. 반복을 했지만 이 모든 경우의 수에 해당하지 않으면 -1 을 리턴한다.
코드는 다음과 같다.
But, sqrt() 함수를 사용하면 이를 보다 쉽게 해결할 수 있다.
sqrt 함수가 무엇일까?
쉽게 말해, 제곱근을 쉽게 구할 수 있는 함수이다.
제곱근을 설명하기에는 애매하여 찾아보시길 권한다.
sqrt 함수를 사용해 나온 결과는 다음과 같다
Right ! 어느 정도 sqrt() 함수에 대한 느낌이 잡혔다.
이를 활용하여 문제를 해결해보자.
삼항 연산자를 활용하여 코드를 줄이면서 비교적 깔끔한 코드가 완성되었다. 굿굿
Source Code 확인 : https://github.com/inswag/ExerciseAlgorithm/blob/master/niveau1.playground/Pages/정수%20제곱근%20판별.xcplaygroundpage/Contents.swift
'Programming > 알고리즘 & 자료구조' 카테고리의 다른 글
Algorithm) x만큼 간격이 있는 n개의 숫자 (프로그래머스 Level 1) (1) | 2020.04.24 |
---|---|
Data Structure) 링크드 리스트(Linked List) in Swift (2) | 2019.11.07 |
Algorithm) 이진 탐색(Binary Search) in Swift (1) | 2019.11.01 |
Algorithm) 퀵 정렬(Quick Sort) in Swift (1) | 2019.10.31 |
- Total
- Today
- Yesterday
- 튜플
- fallthrough
- swiftUI
- 열거형
- Operator
- Swift
- 패캠
- 컨버전
- 프로그래밍
- inswag
- iOS개발스쿨
- 스위프트
- commit
- fastcampus
- ios
- ARC
- 리터럴
- 패스트캠퍼스
- 타입
- 개발스쿨
- lifecycle
- Dictionary
- 딕셔너리
- var
- GCD
- function
- OOP
- array
- 깃허브
- tca
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |