inblog logo
|
silver
    알고리즘문제풀기

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

    silver's avatar
    silver
    Jan 06, 2025
    [알고리즘문제풀기] k의 개수
    Contents
    문제내가 작성한 정답다른 사람들의 정답

    문제

    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/120887

    내가 작성한 정답

    작성한 정답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

    RSS·Powered by Inblog