[알고리즘문제풀기] k의 개수

silver's avatar
Jan 06, 2025
[알고리즘문제풀기] k의 개수

문제

내가 작성한 정답

작성한 정답1

class Solution { public int solution(int i, int j, int k){ int answer = 0; for(int a = i; a <= j; a++){ char[] a1 = String.valueOf(a).toCharArray(); for(char c: a1){ if(c==(char)(k+48)) answer++; } } return answer; } }

내가 작성한 오답 - streamAPI

: 예를 들어 k=1 이고 i와 j 사이에 11이라는 숫자가 포함되어 있다면 11은 2번 카운트 돼야하는데 1번만 카운트 된다.
import java.util.stream.IntStream; class Solution { public int solution(int i, int j, int k) { int answer = 0; return (int) IntStream.rangeClosed(i,j) .mapToObj(String::valueOf) .filter(a->a.contains(String.valueOf(k))) .count(); } }

내가 작성한 정답2 - streamAPI

: 위에서 String으로 만든 int를 char로 쪼개서 하나씩 포함되는지 확인한다.
import java.util.stream.IntStream; class Solution { public int solution(int i, int j, int k) { return (int) IntStream.rangeClosed(i,j) .mapToObj(String::valueOf) .mapToLong(a->a.chars() .filter(b->b == (String.valueOf(k)).charAt(0)).count()) .sum(); } }

다른 사람들의 정답

class Solution { public int solution(int i, int j, int k) { String str = ""; // i부터 j까지 다 연결한 문자열로 만듦 for(int a = i; a <= j; a++) { // a+"" : a를 문자열로 변환! 하여 str에 추가한다. str += a+""; } // k+"" -> k를 문자열로 변환 // 전체 길이에서 k를 공백으로 치환시켜서 구한 길이를 뺀다 return str.length() - str.replace(k+"", "").length(); } }
import java.util.*; import java.util.stream.Collectors; import java.util.stream.IntStream; class Solution { public int solution(int i, int j, int k) { return (int) Arrays.stream(IntStream.rangeClosed(i, j) .mapToObj(String::valueOf) // 각 문자열을 문자로 나눔 .flatMap(String::lines) // 모든 문자열 하나의 문자열로 변환 .collect(Collectors.joining()) // 쪼개서 배열로 변환 .split("")) .filter(s -> s.equals(String.valueOf(k))) .count(); } }
Share article

silver