Swift랑 친해지기/programmers 풀기

[프로그래머스] 저주의 숫자 3 (Swift)

데브킹덕 2022. 11. 10. 17:28

https://school.programmers.co.kr/learn/courses/30/lessons/120871

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

변수

  • haveNo3Array = 3의 배수가 아니거나 3이 들어가지 않은 숫자를 받는 Int형 배열
  • i  = 10진수 , 1부터 시작
  • j = i를 문자열로 매핑한 문자열 배열

내 풀이)

haveNo3Array 요소의 숫자가 n보다 크지 않을 경우 반복

*n은 1부터 시작, haveNo3Array는 인덱스 0부터 시작이므로

 

j -> i를 문자열로 변경 후 각각의 문자로 담긴 문자열 배열로 매핑

 

i가 3으로 나누었을 경우 나머지가 0 이고 j배열이 문자열 "3"을 가지고 있지 않다면 haveNo3Array에 추가

 

i 는 반복할때마다 1증가

 

haveNo3Array의 n번째 - 1 요소를 반환 

 

import Foundation

func solution(_ n:Int) -> Int {
    
    var haveNo3Array = [Int]()
    var i = 1
    
    while haveNo3Array.count < n {
        let j = String(i).map{String($0)}
        if i % 3 != 0 && !j.contains("3"){
            haveNo3Array.append(i)
        }
        i += 1
    }
    return haveNo3Array[n-1]
}

 

 

* 매핑을 하지 않고도 String형으로 변환하여 .contains 메서드를 이용해 포함되었는지 확인 가능