본문 바로가기

카테고리 없음

알고리즘 23 ~ 24

콜라스 추측

 

문제 설명

1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다.

 

1-1. 입력된 수가 짝수라면 2로 나눕니다. 
1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 
2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다.

 

class Solution {
    fun solution(num: Int): Int {
        var answer = 0
        var n = num.toLong()
        
         while (n > 1L) {
            if (n % 2 == 0L) {
                n /= 2
            } else {
                n = n * 3 +1
            }
            
             answer++
            
             if (answer > 500) {
             answer = -1
             break
            }
        }
         return answer
    }
}

 

서울에서 김서방 찾기

문제 설명

String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.

제한 사항

  • seoul은 길이 1 이상, 1000 이하인 배열입니다.
  • seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다.
  • "Kim"은 반드시 seoul 안에 포함되어 있습니다.
class Solution {
    fun solution(seoul: Array<String>): String {
        var answer = seoul.indexOf("Kim")
        return "김서방은 ${answer}에 있다"
    }
}

 

indexOf 함수는, 문자열에서 특정 문자열을 찾고, 검색된 문자열이 첫번째로 나타나는 위치 index를 리턴합니다.

728x90