[HackerRank] Find Digits

아르당·2023년 11월 14일

HackerRank

목록 보기
19/109
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

문제

정수 d는 만약 n / d = 0이면 정수 n의 약수가 된다.
어떤 정수가 주어지고, 정수로 된 각 숫자가 약수인지 판단해라. 정수 내에서 발견한 약수의 갯수를 구해라.

Example

n = 124
124의 약수로 1, 2, 4가 있는지 확인한다. 세 숫자 모두 124를 나누지고 3을 반환한다.

n = 111
111의 약수로 1, 1, 1이 있는지 확인한다. 세 숫자 모두 111를 나누지고 3을 반환한다.

n = 10
10의 약수로 1, 0이 있는지 확인한다. 1은 맞지만 0은 아니다. 그래서 1을 반환한다.

Function Description

findDigits 함수를 완성해라.
findDigits 함수는 아래와 같은 매개변수를 가지고 있다.

  • int n: 분석할 값

Return

  • int: n의 자릿수에 n의 약수 갯수

Constraints

  • 1 <= t <= 15
  • 0 < n < 10^9

풀이

반환할 약수의 갯수를 담을 count를 선언하고 0을 할당한다. 그리고 String 배열을 선언하고 매개변수 n을 String 배열로 변환하여 할당한다.

int count = 0;
String[] strArr = String.valueOf(n).split("");

String 배열을 반복문을 통해 순회한다. 만약 String 배열의 요소가 0이면 다음 요소로 넘기고, n 을 해당 요소로 나눴을때 나머지가 0이면 count를 증가시킨다.

for(int i = 0; i < strArr.length; i++){
	if(strArr[i].equals("0")){
		continue;
	}

	if(n % Integer.parseInt(strArr[i]) == 0){
		count++;
	}
}

마지막으로 count를 반환한다.

return count;

전체 코드

public static int findDigits(int n) {
	int count = 0;
	String[] strArr = String.valueOf(n).split("");

	for(int i = 0; i < strArr.length; i++){
		if(strArr[i].equals("0")){
			continue;
		}

		if(n % Integer.parseInt(strArr[i]) == 0){
			count++;
		}
	}

	return count;
}
profile
내 마음대로 코드 작성하는 세상

1개의 댓글

comment-user-thumbnail
2023년 11월 14일

개발자로서 성장하는 데 큰 도움이 된 글이었습니다. 감사합니다.

답글 달기