Given an array nums of integers, return how many of them contain an even number of digits.
Example 1:
Input: nums = [12,345,2,6,7896]
Output: 2
Explanation:
12 contains 2 digits (even number of digits).
345 contains 3 digits (odd number of digits).
2 contains 1 digit (odd number of digits).
6 contains 1 digit (odd number of digits).
7896 contains 4 digits (even number of digits).
Therefore only 12 and 7896 contain an even number of digits.
Example 2:
Input: nums = [555,901,482,1771]
Output: 1
Explanation:
Only 1771 contains an even number of digits.
import java.io.*;
class Solution {
public int findNumbers(int[] nums) {
int count = 0;
for (int num : nums) {
if (hasEvenDigits(num)) {
count++;
}
}
return count;
}
private boolean hasEvenDigits(int num) {
String numStr = Integer.toString(num);
return numStr.length() % 2 == 0;
}
}
public class find_Numbers_with_Even_Number_of_Digits {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] input = br.readLine().split(" ");
int[] nums = new int[input.length];
for (int i = 0; i < input.length; i++) {
nums[i] = Integer.parseInt(input[i].trim()); // 공백 제거 후 정수로 변환
}
Solution solution = new Solution();
int result = solution.findNumbers(nums);
System.out.println("Output: " + result);
System.out.println("Explanation:");
for (int num : nums) {
String numStr = Integer.toString(num);
String evenOrOdd = numStr.length() % 2 == 0 ? "even" : "odd";
System.out.println(num + " contains " + numStr.length() + " digits (" + evenOrOdd + " number of digits).");
}
}
}
이 문제는 받아온 숫자길이를 짝수 홀수로 분류해주면 된다. 솔직히 처음에는 좀 많이 비효율적으로 생각했다. 10으로 나누어 10나눌때마다 count를 하고 count를 짝인지 홀인지 구분하는 코드로 만들어 코드가 많이 비효율적이였다. 사람들은 어떻게 짰나 보았는데 다들 함수를 여러개 써서 length를 이용해 짝홀을 만들었던 걸 보게되었다. 난 항상 코드를 비효율적으로 짜는 것 같다. 다음번부터는 좀 더 효율적으로 짜기 위해서 좀 더 고민하는 시간이 필요할 것 같다.
'java' 카테고리의 다른 글
[Leetcode] Duplicate Zeros (0) | 2024.05.07 |
---|---|
[java] 11653번 소인수분해 (1) | 2024.04.03 |
[java] 2581번 소수 (0) | 2024.04.03 |
[java] 2745 진법 (0) | 2024.03.28 |
[java] 11005 진법 변환2 (0) | 2024.03.27 |