[ 프로그래머스 ] Lv. 1 나머지가 1이 되는 수 찾기 / 월간 코드 챌린지 시즌3 / Swift / 스위프트 / 알고리즘 문제 풀이 / 코딩테스트

EarthSea·2023년 8월 10일
1
post-thumbnail

문제 설명

자연수 n이 매개변수로 주어집니다. nx로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 xreturn 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.

제한사항

  • 3 ≤ n ≤ 1,000,000

입출력 예

nresult
103
1211

입출력 예 설명

  • 입출력 예 #1

    10을 3으로 나눈 나머지가 1이고, 3보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 3을 return 해야 합니다.

  • 입출력 예 #2

    12를 11로 나눈 나머지가 1이고, 11보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 11을 return 해야 합니다.


나의 풀이


import Foundation

func solution(_ n:Int) -> Int {
	
    // 2부터 n-1까지 1증가하는 반복문 실행
    for i in 2..<n {
    	// 나머지가 1이 되는 수가 있다면, i를 반환
        if n%i == 1 {
            return i
        }
    }
    return 0
}

시간 복잡도는 최대 O(n-2) 입니다.


다른 사람의 풀이

이렇게 간단한 문제를 더 간단하게 return 으로만 작성할 수 있을 것 같아서 다른 사람들의 풀이를 참고해봤어요~!


import Foundation

func solution(_ n:Int) -> Int {
    return (1...n).filter{n % $0 == 1}.min()!
}

filter 문법과 클로저 함수를 사용해서 이렇게도 나타낼 수 있었습니다.

다음 문법 포스터는 클로저 함수를 정리해봐야겠습니다~!

profile
I'm Junior iOS developer 배지해.

0개의 댓글