티스토리 뷰

 

문제의 상황은 간단합니다

 

정수가 하나 주어지고(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

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함