728x90
백준 단계별 문제풀이 4단계 (1차원 배열)
https://www.acmicpc.net/problem/10807
# 문제
총 N개의 정수가 주어졌을 때, 정수 v가 몇 개인지 구하는 프로그램을 작성하시오.
정수의 개수가 첫째줄, 배열이 둘째줄, 정수 v가 셋째줄에 입력된다.
# 예제
입력
11
1 4 1 2 4 2 4 2 3 4 4
2
출력
3
# 필요개념
배열 전체를 for문으로 돌면서 카운트 하는 방법도 있지만, 이번에는 자바를 공부하면서 알게 된 개념인 Stream을 이용하여 풀어보려고 한다.
Stream은 자바8부터 지원하기 시작한 기능으로, 요소들을 모두 순회하며 처리해서 반복문 대신 사용할 수도 있다.
배열은 스트림을 직접 생성할 수 없기 때문에 Arrays.stream()을 사용해 생성해주고, filter를 사용해 조건에 맞게 필터링 작업을 거쳤다.
(관련 내용은 따로 업로드 후 링크를 달아둘 예정이다)
# Code
1. stream 이용
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int size = sc.nextInt();
int[] arr = new int[size];
for (int i = 0 ; i < size ; i++) {
arr[i] = sc.nextInt();
}
int same = sc.nextInt();
System.out.print(Arrays.stream(arr).filter(i -> i == same).toArray().length);
}
}
2. for문 이용
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int size = sc.nextInt();
int[] arr = new int[size];
for (int i = 0 ; i < size ; i++) {
arr[i] = sc.nextInt();
}
int same = sc.nextInt();
int cnt = 0;
for (int i = 0 ; i < size ; i++) {
if (arr[i] == same) cnt++;
}
System.out.println(cnt);
}
}
# 결과
'코딩테스트 > 백준 브론즈,실버' 카테고리의 다른 글
[백준] 3052 : 나머지 (distinct() 메소드) - JAVA (0) | 2024.01.14 |
---|---|
[백준] 10813 : 공바꾸기 (setAll() 메소드) - JAVA (0) | 2024.01.14 |
[백준] 10818 : 최소, 최대 (stream의 min, max) - JAVA (0) | 2024.01.14 |
[백준] 2439 : 별찍기 - JAVA (0) | 2024.01.08 |
[백준] 15552 : 빠른 A+B (BufferReader, BufferWriter 사용하기) - JAVA (4) | 2024.01.08 |