[Swift] 알고리즘 문제 - 몫 구하기, 배열 뒤집기, 문자열 뒤집기

Oni·2023년 9월 3일
0

TIL

목록 보기
13/47
post-thumbnail

원문 포스팅 🔗

1. 몫 구하기

  • 몫을 구하는 연산자: /
  • return num1 / num2
  • 제한사항을 고려해서 조건문을 추가 작성
import Foundation

func solution(_ num1:Int, _ num2:Int) -> Int {
    if num1 > 0 && num1 <= 100, num2 > 0 && num2 <= 100 {
        var answer = num1 / num2
        return answer
    } else {
        return 0
    }
}
  • 부울연산자 : 불리언 값의 논리연산을 수행함
    • NOT : !A
    • AND : A && B
    • OR : A || B

좀더 간단하게 return 을 계산값 자체로 변환할 수도 있다.

func solution(_ num1:Int, _ num2:Int) -> Int {
    guard 1...100 ~= num1, 1...100 ~= num2 else { return 0 }
    return num1 / num2
}
  • 범위연산자(A...B) : A부터 B까지의 수를 묶어 범위를 표현함(A와 B는 포함)
  • 비교연산자(~=) : 패턴이 매치되는지 확인

📍
처음엔 제한사항을 무시하고 나눈 값을 바로 return 하는 코드로 작성했는데,
테스트 값이 만족할 때는 에러가 없었지만 검증을 위해 여러 값을 받을 때는 오류가 발생했다.
문제를 정의할 때 제한사항, 필수사항들을 놓치지 말고 한단계씩 구현하는 습관을 길러야겠다.

2. 배열 뒤집기

  • 배열 요소의 갯수를 구하는 프로퍼티 : count
  • 배열 원소의 최솟값, 최댓값 프로퍼티 : min, max
  • 배열을 뒤집는 메서드 : reverse(), reversed()
    • reverse() : 기존 배열을 바꿈(덮어쓰기)
    • reversed() : 기존 배열은 그대로 두고 새로운 배열로 나타냄
import Foundation

func solution(_ num_list:[Int]) -> [Int] {
    return num_list.reversed()
}

📍
Swift에서 기본으로 내장된 메서드를 잘 활용할 줄 알아야 하며, 해당 메서드를 사용할 때는 항상 import Foundation을 작성해야 한다. Swift 공식 문서를 꼭 확인하자 Swift Programming Language Guide(ENG)

3. 문자열 뒤집기

  • 배열 뒤집기와 마찬가지로 reversed() 메서드를 활용
  • 🚨 return 값을 String으로 묶어주지 않으면 에러 발생
    error: cannot convert return expression of type 'ReversedCollection' to return type 'String'
import Foundation

func solution(_ my_string:String) -> String {
    return String(my_string.reversed())
}

알고리즘 문제 푸는걸 처음해봤는데, 머리로는 너무 간단한데 실제 코드를 작성하려고 보니까 막상 안쳐지는거다..
그리고 기본 작업 툴에서는 자동완성도 있고 모르면 옵션으로 찾아볼 수도 있는데 아무 도움도 안주는 툴로 하니까 머리가 새하얘졌다..
기초중에 기초인 문법을 하루라도 빼놓지 않고 공부해야겠고, 오류코드도 따로 메모해둬서 리뷰를 해야겠다.

profile
하지만 나는 끝까지 살아남을 거야!

0개의 댓글