240316 숫자 블록

Jongleee·2024년 3월 16일
0

TIL

목록 보기
522/737
final int MAX = 10_000_000;

public int[] solution(long begin, long end) {
	int[] answer = new int[(int) (end - begin + 1)];

	for (long i = begin; i <= end; i++) {
		answer[(int) (i - begin)] = findValue(i);
	}

	return answer;
}

private int findValue(long num) {
	if (num == 1) {
		return 0;
	}

	List<Integer> l = new ArrayList<>();

	for (int i = 2; i <= Math.sqrt(num); i++) {
		if (num % i == 0) {
			l.add(i);

			if (num / i <= MAX) {
				return (int) (num / i);
			}
		}
	}

	if (!l.isEmpty()) {
		return l.get(l.size() - 1);
	}
	return 1;
}

출처:https://school.programmers.co.kr/learn/courses/30/lessons/12923

0개의 댓글