[Swift] 제곱근 판별하기

2024. 11. 16. 23:52·Apple/Swift
목차
  1. 문제 설명
  2. 문제 풀이
  3. 전체 소스 코드
  4. 느낀 점
728x90
반응형

안녕하세요! 피피아노입니다 🎵

 

이번 포스팅에서는 Swift에서 제곱수를 판별하는 방법에 대해서 정리를 해보려고 합니다.

 

그럼 바로 시작하겠습니다.

 

문제 설명

먼저 문제부터 간단하게 살펴보겠습니다.

 

어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 리턴하고 아니라면 2를 리턴을 해줘야 합니다.

 

예를 들어서 n이 144라면 12를 제곱했을 때 나올 수 있는 숫자이므로 1을 리턴해주고, 976은 어떤 수를 제곱해도 나올 수 없는 숫자이니 2를 리턴합니다.

 

제한사항: 1 <= n <= 1,000,000

문제 풀이

우선 Swift에서 제곱근을 구하기 위해 사용할 수 있는 함수인 sqrt함수를 사용해봤습니다. sqrt 함수는 Double을 반환하므로 바로 사용할 수 없고 n을 Double로 변환해야 했습니다. 그리고 해당 값을 특정 변수에 저장해야 했는데 저는 메모리 효율성과 시간 효율성을 조금이라도 챙기기 위해 var 변수 대신 let 변수로 선언하였습니다.

let sqrtValue = sqrt(Double(n))

 

제곱근은 소수점을 포함한 실수(Double)로 반환되며, 이 값이 정수인지 확인해야 합니다.

 

이를 위해 floor 함수를 사용하여, 제곱근 값의 소수점을 버리고 가장 가까운 작은 정수로 내림 처리를 해주었습니다. 그런 다음, 원래의 제곱근 값(sqrtvalue)과 내림 처리된 값(floor(sqrtvalue))을 비교하였습니다. 그리고 if else문을 사용해서 만약 두 값이 같다면, 이는 sqrtvalue가 정수라는 뜻이며, 주어진 값 n이 어떤 수의 제곱임을 의미합니다. 이 경우, 1을 반환하게 코드를 작성했습니다.

 

반대로, 두 값이 다르다면 제곱근에 소수점 이하 값이 존재하므로 sqrtvalue는 정수가 아닙니다. 따라서 n은 제곱수가 아니며, 이 경우 2를 반환합니다.

 

*floor 함수: 주어진 실수를 내림하여 가장 가까운 작은 정수로 반환하는 함수입니다. 즉, 소수점 아래 자리를 무시하고 작은 방향으로 내림합니다.

if sqrtvalue == floor(sqrtvalue) {
        return 1
    } else {
        return 2
    }
}

 

 

전체 소스 코드

import Foundation

func solution(_ n: Int) -> Int {
    let sqrtvalue = sqrt(Double(n))
    if sqrtvalue == floor(sqrtvalue) {
        return 1
    } else {
        return 2
    }
}

 

느낀 점

제곱수를 확인하기 위해 어떤 함수를 사용해야 할지 몰랐지만, 이번 기회를 통해 sqrt 함수와 floor 함수를 사용하는 방법을 배우게 되었습니다. 이 과정에서 sqrt 함수가 Double형 값을 반환한다는 등의 특징도 알게 되었고, 이를 활용한 다양한 응용 방법도 익힐 수 있었습니다.


감사합니다.

 

잘못된 내용이 있거나 더 좋은 내용 피드백은 언제나 환영합니다!

궁금하신 부분은 댓글로 질문 부탁드립니다!

728x90
반응형

'Apple > Swift' 카테고리의 다른 글

[Swift] stride와 enumerated 알아보기  (2) 2024.11.24
[Swift] 과일 장수 문제 풀이 및 회고  (4) 2024.11.20
[Swift] n의 배수 고르기 문제 회고  (5) 2024.11.14
[Swift] 배열의 유사도 회고  (11) 2024.11.08
[Swift] Actor 이해하기 (1/2)  (27) 2024.11.04
  1. 문제 설명
  2. 문제 풀이
  3. 전체 소스 코드
  4. 느낀 점
'Apple/Swift' 카테고리의 다른 글
  • [Swift] stride와 enumerated 알아보기
  • [Swift] 과일 장수 문제 풀이 및 회고
  • [Swift] n의 배수 고르기 문제 회고
  • [Swift] 배열의 유사도 회고
P_Piano
P_Piano
Apple 생태계 개발자가 되기 위한 학습과 경험의 기록
    반응형
    250x250
  • P_Piano
    피피아노의 개발 일지
    P_Piano
  • 전체
    오늘
    어제
    • 분류 전체보기 (208) N
      • Apple (126) N
        • iOS (22)
        • visionOS (4)
        • Swift (68)
        • UIKit (2)
        • SwiftUI (24) N
        • RxSwift (2)
        • Xcode (4)
      • C언어 (5)
      • C++ (8)
      • Dart (1)
      • Python (3)
      • JavaScript (17)
      • Git (1)
      • CS (39)
        • 디자인 패턴 (6)
        • 네트워크 (20)
        • 운영체제 (8)
        • Database (5)
        • 자료구조 (0)
      • IT 지식 (2)
      • IT 뉴스 (4)
      • 출처 표기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    배열
    이니셜라이저
    스위프트
    함수
    네트워크
    비동기
    디자인패턴
    제어문
    옵셔널
    변수
    프로그래머스
    프로퍼티 래퍼
    ios
    코딩테스트
    자바스크립트
    combine
    연산자
    SWIFT
    Xcode
    운영체제
    오블완
    Optional
    Initializers
    클래스
    UIKit
    Vision Pro
    swiftUI
    visionOS
    프로세스
    티스토리챌린지
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
P_Piano
[Swift] 제곱근 판별하기

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.