-
Programmers Lv2) [3차] n진수 게임Algorithm/Programmers 2020. 8. 28. 17:34728x90
출처: programmers.co.kr/learn/courses/30/lessons/17687
분류: 카카오 블라인드 2018 3차, Lv2
접근방식
주어진 진법의 수를 한 글자씩 끊어서 말하는 게임입니다.
모든 멤버 * turn 이 총 말해야 할 문자열의 길이가 됩니다.0부터 시작해서 총 문자열의 길이가 멤버 * turn 가 될 때가지 문자열을 만들어 주고
여기서 튜브가 차례의 문자들 (p-1 + m * turn) 을 찾아주는 방식으로 해결했습니다.
(p가 1부터 시작하기 때문에 -1을 해줬습니다.)해결방법
func solution(_ n:Int, _ t:Int, _ m:Int, _ p:Int) -> String { let string = radixString(radix: n, turn: t, member: m) var result = "" var turn = 0 while turn < t { result.append(string[p-1 + m * turn]) turn += 1 } return result } func radixString(radix n: Int, turn: Int, member: Int) -> [Character] { var string = [Character]() var idx = 0 while string.count <= turn * member { string += Array(String(idx, radix: n).uppercased()) idx += 1 } return string }
배운점
String에서 진법 변환을 제공해줘서 쉽게 해결할 수 있었습니다.
처음엔 radix 스트링을 만든 다음 Array로 바꿔줬는데, 이렇게 하니 일부 시간초과가 났습니다.
아예 array를 리턴하는 방식으로 하니 조금 빠르게 풀 수 있었습니다.
'Algorithm > Programmers' 카테고리의 다른 글
Programmers Lv2) [2021 카카오블라인드] 신규 아이디 추천 (0) 2021.02.22 Programmers Lv4) [2020 카카오블라인드] 가사검색 (0) 2020.08.30 Programmers Lv2) 파일명 정렬 (0) 2020.08.28 Programmers Lv2) 압축 (0) 2020.08.28 Programmers Lv2) 방금그곡 (0) 2020.08.28