카타 7급 Hero's root

1 C[ | ]

int intRac(long long n, long long guess) {
  long long newGuess = (n/guess + guess)/2;
  if( newGuess == guess ) return 1;
  return intRac(n, newGuess)+1;
}
int intRac(long long n, long long guess) {
  long long newGuess = (guess+n/guess)/2;
  return newGuess==guess? 1 : intRac(n, newGuess)+1;
}
int intRac(long long n, long long guess) {
  long long prevGuess = 0;
  int step = 0;
  while( guess != prevGuess) {
    prevGuess = guess;
    guess = (guess+n/guess) / 2;
    step++;
  }
  return step;
}

2 Kotlin[ | ]

package hero
fun intRac(n:Long, guess:Long):Long {
  val newGuess = (n / guess + guess) / 2
  if( newGuess == guess ) return(1)
  return intRac(n, newGuess)+1
}
package hero
fun intRac(n: Long, guess: Long): Long {
    tailrec fun iter(i: Long, guess: Long): Long {
        val nextGuess = (guess + n / guess) / 2
        return if (guess == nextGuess) i else iter(i + 1, nextGuess)
    }
    return iter(1, guess)
}

3 R[ | ]

intRac <- function(n, guess) {
  newGuess = (n %/% guess + guess) %/% 2
  if( newGuess == guess ) return(1)
  intRac(n, newGuess)+1
}
intRac <- function(n, guess) {
  cnt = 0
  prevGuess = -1
  while( guess != prevGuess ) { 
    prevGuess = guess
    guess = (n %/% guess + guess) %/% 2
    cnt = cnt + 1
  }
  cnt
}
intRac <- function(n, guess) {
  if( floor(sqrt(n)) == guess ) return(1)
  intRac(n, floor((guess*guess+n)/2/guess))+1
}
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}