[람다 스트림] [문자열] [자바] [백준] - 10808 알파벳 개수

SlowAnd·2024년 1월 8일
0
post-thumbnail

브론즈4
https://www.acmicpc.net/problem/10808

[방법 1] Map + forEach 이용

public class boj_10808 {
    public static void main(String[] args) throws IOException {
        BufferedReader r = new BufferedReader(new InputStreamReader(System.in));

        Map<Character, Long> input = r.readLine().chars()
                .mapToObj(c -> (char) c)
                .collect(Collectors.groupingBy(c -> c, Collectors.counting()));

        IntStream.range('a','z'+1)
                .forEach(alphabet ->
                	System.out.print(input.getOrDefault( (char)alphabet,0L)+" "));

    }
}
  • (Map)입력 초기화
    • 단일 루프
  • 각 요소 비교 연산
    • forEach 에서 1중 루프

[방법 2] String + forEach 이용

public class boj_10808 {
    public static void main(String[] args) throws IOException {
        BufferedReader r = new BufferedReader(new InputStreamReader(System.in));

        String str = Arrays.stream(r.readLine().split("")).collect(Collectors.joining());
        IntStream.range('a','z'+1)
                .forEach( alphabet -> 
                	System.out.print( str.chars().filter( ch -> ch == alphabet).count()+" "));
    }
}
  • (String)입력 초기화
    • 단일 루프
  • 각 요소 비교 연산
    • forEach 에서 1중 루프, filter 에서 2중 루프

0개의 댓글