반응형

오늘은 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

 

rand(5)로 rand(7) 구현하기!?

오늘 조엘 스폴스키의 "Learning from StackOverflow.com" 구글테크톡스 비디오를 보다가, 예전에 지인이 물어봤던 퀴즈 문제를 다시 만났습니다. 일종의 수학 문제인데, 조엘이 인터뷰 질문으로 자주 쓴�

all2one.tistory.com

여기서 영감을 받아 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
}

읽어주셔서 감사합니다

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기