Fizz Buzz 문제
문제 설명
정수 n이 주어질 때, 다음 규칙에 따라 문자열 배열 answer를 반환하세요.
(배열은 1부터 시작하는 인덱스 기반입니다.)
•
answer[i] == "FizzBuzz": i가 3과 5의 공배수일 경우
•
answer[i] == "Fizz": i가 3의 배수일 경우
•
answer[i] == "Buzz": i가 5의 배수일 경우
•
위 조건 모두 해당하지 않으면 answer[i] == i (문자열로 변환)
예시
예제 1
입력: n = 3
출력: ["1","2","Fizz"]
예제 2
입력: n = 5
출력: ["1","2","Fizz","4","Buzz"]
예제 3
입력: n = 15
출력:
["1","2","Fizz","4","Buzz","Fizz","7","8","Fizz","Buzz","11","Fizz","13","14","FizzBuzz"]
제한사항
•
1 ≤ n ≤ 10,000
Count Primes 문제
문제 설명
정수 n이 주어질 때, **n보다 작은 소수(prime number)**의 개수를 반환하세요.
소수란? 1보다 큰 자연수 중에서, 1과 자기 자신만으로 나누어지는 수입니다.
예시
예제 1
입력: n = 10
출력: 4
설명: 10보다 작은 소수는 2, 3, 5, 7 → 총 4개
예제 2
입력: n = 0
출력: 0
예제 3
입력: n = 1
출력: 0
제한사항
•
0 ≤ n ≤ 5,000,000
Power of Three 문제
문제 설명
정수 n이 주어질 때, n이 3의 거듭제곱인지 여부를 판단하여 true 또는 false를 반환하세요.
정수 n이 3의 거듭제곱이라는 뜻은,
어떤 정수 x에 대해 n == 3^x를 만족하는 경우입니다.
예시
예제 1
입력: n = 27
출력: true
설명: 27은 3^3이므로 3의 거듭제곱입니다.
예제 2
입력: n = 0
출력: false
설명: 3의 거듭제곱 중 0이 되는 수는 없습니다.
예제 3
입력: n = -1
출력: false
설명: 3의 거듭제곱은 항상 양수이므로, -1은 해당되지 않습니다.
제한사항
•
2³¹ ≤ n ≤ 2³¹ - 1
추가 과제 (Follow-up)
반복문이나 재귀 없이 풀 수 있나요?
•
즉, while / for / recursion 없이도 판단할 수 있는 수학적 또는 최적화된 방식으로 풀어보세요.
Roman to Integer 문제
문제 설명
로마 숫자는 다음과 같은 7개의 기호로 구성되어 있습니다:
기호 | 값 |
I | 1 |
V | 5 |
X | 10 |
L | 50 |
C | 100 |
D | 500 |
M | 1000 |
로마 숫자는 일반적으로 큰 숫자에서 작은 숫자 순서로 왼쪽에서 오른쪽으로 나열됩니다.
하지만 작은 숫자가 큰 숫자 앞에 오는 경우, 해당 값을 감산합니다.
예를 들어:
•
IV → 4 (5 - 1)
•
IX → 9 (10 - 1)
•
XL → 40 (50 - 10)
•
XC → 90 (100 - 10)
•
CD → 400 (500 - 100)
•
CM → 900 (1000 - 100)
예시
예제 1
입력: "III"
출력: 3
설명: 1 + 1 + 1 = 3
예제 2
입력: "LVIII"
출력: 58
설명: 50(L) + 5(V) + 3(I+I+I) = 58
예제 3
입력: "MCMXCIV"
출력: 1994
설명: 1000(M) + 900(CM) + 90(XC) + 4(IV)
제약 조건
•
입력 문자열 s의 길이는 1 이상 15 이하입니다.
•
s는 'I', 'V', 'X', 'L', 'C', 'D', 'M'만 포함합니다.
•
s는 항상 유효한 로마 숫자로 주어지며, 범위는 [1, 3999] 입니다.