반응형
오늘은 Implement Rand10() Using Rand7()Solution를 풀어보도록 하겠습니다
링크는 https://leetcode.com/problems/implement-rand10-using-rand7 입니다
맨 처음에는 어떤식으로 접근해야할지 몰랐습니다
rand7에서 하나 뽑고 1,2,3에서 랜덤으로 뽑아서 더하면 되는거 아닌가? 라는 식으로 접근을 하였습니다
func rand10() int {
return rand7() + rand7()%3
}
이렇게 쉽게 통과 될리가 없죠 ㅠㅠ
그 뒤로 블로그 글들을 찾으면서 어떤 알고리즘으로 접근해야 하는지 고민을 해보았습니다
https://all2one.tistory.com/entry/rand5%EB%A1%9C-rand7-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0
여기서 영감을 받아 rand7을 두번 돌리는것으로 접근해보았습니다
두 번돌려서 7x7행렬을 만들었을때 40까지 10의 배수이므로 40이상일 때 다시 뽑는 과정으로 구현하였습니다
그리고 각각 뽑아서 row와 col으로 행렬에 값을 가져오는 형식으로 구현하였습니다
코드는 아래와 같습니다
func rand10() int {
index := 41
for index > 40 {
row := rand7()
col := rand7()
index = (row - 1) * 7 + col
}
return 1 + index%10
}
읽어주셔서 감사합니다
'Language > Go' 카테고리의 다른 글
[Golang으로 도전하는 Leetcode] Repeated Substring Pattern (0) | 2020.09.04 |
---|---|
[Golang으로 도전하는 Leetcode] Contains Duplicate III (0) | 2020.09.02 |
[Golang으로 도전하는 Leetcode] Largest Time for Given Digits (0) | 2020.09.02 |
[Golang으로 도전하는 Leetcode] Minimum Cost For Tickets (0) | 2020.08.28 |
[Golang으로 도전하는 Leetcode] FizzBuzz (0) | 2020.08.27 |