Search

코딩테스트 준비문제 (수학)

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] 입니다.