행복한 수 (Happy Number)
정수 n이 행복한 수(happy number)인지 판단하는 알고리즘을 작성하세요.
행복한 수는 다음 과정을 통해 정의됩니다:
•
어떤 양의 정수에서 시작하여, 각 자리 숫자의 제곱의 합으로 그 수를 바꿉니다.
•
이 과정을 반복하여 수가 1이 되면(그 이후로는 1에 머뭅니다) 종료하거나, 1을 포함하지 않는 사이클을 이루며 무한히 반복되면 종료합니다.
•
이 과정이 1로 끝나는 수를 행복한 수라고 합니다.
n이 행복한 수이면 true, 아니면 false를 반환하세요.
예시 1:
입력: n = 19
출력: true
설명:
1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1
Plain Text
복사
예시 2:
입력: n = 2
출력: false
Plain Text
복사
제약 조건:
•
1 <= n <= 2^31 - 1
팩토리얼 뒤의 0 개수 (Factorial Trailing Zeroes)
정수 n이 주어질 때, n!의 뒤에서부터 연속된 0(trailing zeroes) 의 개수를 반환하세요.
참고로 n! = n * (n - 1) * (n - 2) * ... * 3 * 2 * 1 입니다.
예시 1:
입력: n = 3
출력: 0
설명: 3! = 6, 뒤에 0이 없습니다.
Plain Text
복사
예시 2:
입력: n = 5
출력: 1
설명: 5! = 120, 뒤에 0이 1개 있습니다.
Plain Text
복사
예시 3:
입력: n = 0
출력: 0
Plain Text
복사
제약 조건:
•
0 <= n <= 10^4
추가 질문(Follow up): 로그 시간 복잡도(대략 O(log n))로 동작하는 풀이를 작성할 수 있나요?
엑셀 시트 열 번호 (Excel Sheet Column Number)
엑셀 시트에서 사용하는 열 제목을 나타내는 문자열 columnTitle이 주어집니다. 이에 대응하는 열 번호를 반환하세요.
예:
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
Plain Text
복사
예시 1:
입력: columnTitle = "A"
출력: 1
Plain Text
복사
예시 2:
입력: columnTitle = "AB"
출력: 28
Plain Text
복사
예시 3:
입력: columnTitle = "ZY"
출력: 701
Plain Text
복사
제약 조건:
•
1 <= columnTitle.length <= 7
•
columnTitle은 대문자 영문자만 포함합니다.
•
columnTitle은 ["A", "FXSHRXW"] 범위에 있습니다.
거듭제곱 Pow(x, n) (Pow(x, n))
x의 n제곱을 계산하는 함수 pow(x, n)을 구현하세요(즉, x^n).
예시 1:
입력: x = 2.00000, n = 10
출력: 1024.00000
Plain Text
복사
예시 2:
입력: x = 2.10000, n = 3
출력: 9.26100
Plain Text
복사
예시 3:
입력: x = 2.00000, n = -2
출력: 0.25000
설명: 2^-2 = 1/(2^2) = 1/4 = 0.25
Plain Text
복사
제약 조건:
•
-100.0 < x < 100.0
•
-(2^31) <= n <= 2^31 - 1
•
n은 정수입니다.
•
x가 0이 아니거나, n > 0 입니다.
•
-10^4 <= x^n <= 10^4
제곱근 (Sqrt(x))
음이 아닌 정수 x가 주어질 때, x의 제곱근(square root) 을 내림(floor) 하여 정수로 반환하세요. 반환 값 또한 음이 아닌 정수여야 합니다.
내장 거듭제곱 함수/연산자를 사용하면 안 됩니다.
•
예: C++의 pow(x, 0.5) 또는 Python의 x ** 0.5 사용 금지
예시 1:
입력: x = 4
출력: 2
설명: 4의 제곱근은 2이므로 2를 반환합니다.
Plain Text
복사
예시 2:
입력: x = 8
출력: 2
설명: 8의 제곱근은 2.82842... 이고, 내림하면 2입니다.
Plain Text
복사
제약 조건:
•
0 <= x <= 2^31 - 1
두 정수 나누기 (Divide Two Integers)
두 정수 dividend와 divisor가 주어집니다. 곱셈(*), 나눗셈(/), 나머지(%) 연산자를 사용하지 않고 두 정수를 나누세요.
정수 나눗셈 결과는 0을 향해(truncate toward zero) 버림합니다. 즉, 소수 부분은 버립니다.
예를 들어 8.345는 8이 되고, -2.7335는 -2가 됩니다.
dividend / divisor의 몫(quotient) 을 반환하세요.
주의: 32비트 signed integer 범위 [−2^31, 2^31 − 1]만 저장할 수 있는 환경을 가정합니다.
•
결과가 2^31 - 1보다 크면 2^31 - 1을 반환합니다.
•
결과가 -2^31보다 작으면 -2^31을 반환합니다.
예시 1:
입력: dividend = 10, divisor = 3
출력: 3
설명: 10/3 = 3.33333.. 이며, 0을 향해 버림하면 3입니다.
Plain Text
복사
예시 2:
입력: dividend = 7, divisor = -3
출력: -2
설명: 7/-3 = -2.33333.. 이며, 0을 향해 버림하면 -2입니다.
Plain Text
복사
제약 조건:
•
-(2^31) <= dividend, divisor <= 2^31 - 1
•
divisor != 0
분수를 순환소수로 변환 (Fraction to Recurring Decimal)
분수의 분자 numerator와 분모 denominator가 주어집니다. 이 분수를 문자열 형태로 반환하세요.
소수 부분이 순환한다면, 순환하는 부분을 괄호 ()로 감싸서 표현합니다.
가능한 정답이 여러 개라면 그 중 아무거나 반환해도 됩니다.
모든 입력에 대해 정답 문자열의 길이는 10^4보다 작음이 보장됩니다.
또한 이 분수가 유한 소수로 표현될 수 있다면, 반드시 유한한 문자열로 반환해야 합니다.
예시 1:
입력: numerator = 1, denominator = 2
출력: "0.5"
Plain Text
복사
예시 2:
입력: numerator = 2, denominator = 1
출력: "2"
Plain Text
복사
예시 3:
입력: numerator = 4, denominator = 333
출력: "0.(012)"
Plain Text
복사
제약 조건:
•
-(2^31) <= numerator, denominator <= 2^31 - 1
•
denominator != 0
