반응형

안녕하세요. 개발 중인 정주입니다.

 

오늘은 "프로그래머스(Lv.2) - [3차] n진수 게임" 문제를 풀었습니다.

 


Github

 

GitHub - jeongju9216/SwiftAlgorithm: 스위프트 알고리즘

스위프트 알고리즘. Contribute to jeongju9216/SwiftAlgorithm development by creating an account on GitHub.

github.com

 

문제 링크

 

코딩테스트 연습 - [3차] n진수 게임

N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0

programmers.co.kr

 


풀이

이번 문제는 문자열 처리 문제입니다.

 

1. 0부터 1씩 증가 시키며 String(, radix:)를 이용해 진법 변환을 합니다.

Swift에서는 진법 변환이 간단합니다.

count를 1씩 증가 시키며 radix에 input n을 넣어 진법 변환을 해줍니다.

그리고 str 배열에 넣어 문자열을 이어줍니다.

 

2. 튜브 차례의 글자 구하기

튜브 차례의 글자들을 구해야 합니다.

이것은 stride를 이용했습니다. 

처음에는 0부터 문자열 길이부터 1씩 증가하면서 반복했는데요.

stride를 이용해 반복 횟수를 줄일 수 있었습니다.

 

감사합니다!


전체 코드


      
func solution(_ n:Int, _ t:Int, _ m:Int, _ p:Int) -> String {
var str: [Character] = []
var count = 0
while str.count <= m * t {
str += Array(String(count, radix: n))
count += 1
}
var result = ""
for i in stride(from: p-1, to: str.count-1, by: m) {
result += String(str[i])
if result.count == t {
break
}
}
return result.uppercased()
}

아직은 초보 개발자입니다.

더 효율적인 코드 훈수 환영합니다!

공감 댓글 부탁드립니다.

 

 

반응형
유정주