Week 9
Kakao - 카카오 신입 공채 3차 코딩 테스트
Week9 | 이번주의 문제 |
---|---|
1 | N진수 게임 |
2 | 압축 |
3 | 파일명 정렬 |
4 | 방금그곡 |
5 | 자동완성 |
1. N진수 게임
Go language 공부겸 이미 만들어진 진법 변환 함수를 사용하지 않고 작성해 보았다.
sol_1.go
package main
import (
"fmt"
"strconv"
"strings"
)
func decimalToTarget(num int, target int) []string {
var slice []string
if num == 0 {
slice = append(slice, "0")
return slice
}
for i := 0; num > 0; i++ {
mod := strconv.Itoa(num % target)
mod = str_mod(mod)
slice = append(slice, mod)
num = num / target
}
return reverseSlice(slice)
}
func reverseSlice(input []string) []string {
for i, j := 0, len(input)-1; i < j; i, j = i+1, j-1 {
input[i], input[j] = input[j], input[i]
}
return input
}
func str_mod(input string) string {
switch input {
case "10":
return "A"
case "11":
return "B"
case "12":
return "C"
case "13":
return "D"
case "14":
return "E"
case "15":
return "F"
}
return input
}
func solution(format int, time int, player int, order int) {
var answer []string
num := 0
t := time * player
for len(answer) < time*player {
convertVal := decimalToTarget(num, format)
resJoin := strings.Join(convertVal, "")
answer = append(answer, resJoin)
num++
}
answersJoin := strings.Join(answer, "")
answersSplit := strings.Split(answersJoin, "")
for i := 0; i < t; i++ {
if i%player == order-1 {
fmt.Print(answersSplit[i])
}
}
fmt.Println()
}
func main() {
solution(2, 4, 2, 1)
solution(16, 16, 2, 1)
solution(16, 16, 2, 2)
}
2. 압축
LZW 알고리즘 설명의 의사코드를 구현하는 문제
sol_2.go
package main
import (
f "fmt"
)
func solution_2(msg string) {
dict := []string{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}
var msgLength = len(msg)
answer := ""
msgfor := 0
msgback := msgLength
for {
for index, val := range dict {
if val == msg[msgfor:msgback] {
f.Print(index+1, " ")
answer = answer + val
if len(answer) == msgLength {
return
}
dict = append(dict, string(val)+string(msg[msgback]))
msgfor = msgfor + len(val)
msgback = msgLength + 1
break
}
}
msgback--
}
}
func main() {
solution_2("KAKAO")
solution_2("TOBEORNOTTOBEORTOBEORNOT")
solution_2("ABABABABABABABAB")
}