TIL/알고리즘 공부

프로그래머스 Lv. 2 Swift 알고리즘 - [3차] n진수 게임

여의도사노비 2023. 1. 13. 11:51
728x90

요즘 일정이 너무 겹쳐 하루 2개 알고리즘은 유지못하게 됐다... 다음주부터는 다시 유지해봐야지 ㅠㅠ

 

Swift 말고 다른 언어를 깊게 써본적이 없어서 잘 모르겠지만... radix 기능은 정말 너무 편한것 같다... 특히 코테를 푸는 사람들에겐 :)

 

이 문제도 radix로 배열 잘 만들어주고 그 배열에서 내 순서에 맞게 필요한 값만 저장하면 끝이다.

 

 

 

이 문제를 풀면서 생각한 논리적 흐름

  1. 먼저 사용할 n진법 값들을 하나씩 나열해준다.(값들을 토큰 단위로 하나씩 쪼갠다.)
  2. 범위는 t개의 단어가 필요한데 사람 숫자에 따라 범위가 늘어날 수 있어서 m을 곱한 t*m 개로 설정하였다.
  3. 그렇게 나열한 값들을 전부 temp에 담고 나의 시작 순서(from: p-1)와 몇 단위로 건너뛸건지(by: m) 설정한다.
  4. 그렇게 만들어진 순서대로 temp의 원소들을 arr에 대입한다.(Uppercased 주의)
  5. String으로 joined()해준다.

 

 

* 코드

func solution(_ n:Int, _ t:Int, _ m:Int, _ p:Int) -> String {
    var arr: [String] = []
    var temp: [String.Element] = []
    
    for i in 0..<t*m {
        temp += Array(String(i, radix: n))
    }

    for i in stride(from: p-1, to: t*m, by: m) {
        arr.append(String(temp[i]).uppercased())
    }
    return arr.joined()
}
 
 

정리(Today I Learned)

  1. 없음