일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 백준2823
- 티스토리챌린지
- dfs
- 브루트포스
- 컴퓨터네트워크
- 오블완
- 컴퓨터 네트워크
- BFS
- 코딩테스트
- 프로토콜
- 백준2493
- Java
- deque
- 백준13901
- Python
- 그래프
- 시뮬레이션
- 파이썬실습
- 정렬
- 백준3085
- linkedlist
- 배열
- 그래프이론
- 파이썬
- 백준1926
- 인터넷
- 백트래킹
- greedy
- Queue
- Stack
Archives
- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 백준2823
- 티스토리챌린지
- dfs
- 브루트포스
- 컴퓨터네트워크
- 오블완
- 컴퓨터 네트워크
- BFS
- 코딩테스트
- 프로토콜
- 백준2493
- Java
- deque
- 백준13901
- Python
- 그래프
- 시뮬레이션
- 파이썬실습
- 정렬
- 백준3085
- linkedlist
- 배열
- 그래프이론
- 파이썬
- 백준1926
- 인터넷
- 백트래킹
- greedy
- Queue
- Stack
Archives
- Today
- Total
Little cabin in the woods
[백준] 10807. 개수 세기 (JAVA) 본문
이번에 풀어 볼 문제는 <백준 10807번. 개수 세기>이다.
https://www.acmicpc.net/problem/10807
📌 문제 탐색하기
목표
총 N개의 정수가 주어졌을 때, 정수 v가 몇 개인지 구하기
해야 할 것
1. N개의 정수 저장하기
2. 각 정수와 v 비교하기
입력
[첫줄] N : 정수의 크기 ( 1 ≤ n ≤ 100 )
[둘째줄] 정수 ( 공백으로 구분)
[셋째줄] v ( -100 ≤ x ≤ 100 )
아이디어
1. 정수의 개수 N이 100 이하이므로 하나씩 탐색하며 비교해도 가능하겠다.
📌 코드 설계하기
1. input 정수를 받고, 배열로 저장한다. v의 개수를 셀 변수 count를 초기화한다.
2. 배열의 각 원소들을 하나씩 탐색하며 v 와 비교한다.
3. 현재 원소가 v와 같다면 count++
4. 모든 원소를 탐색 완료하면 count를 출력한다.
📌 정답 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] arr = new int[n];
int count = 0;
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i =0; i<n; i++){
arr[i] = Integer.parseInt(st.nextToken());
}
int v = Integer.parseInt(br.readLine());
for(int i =0; i<n; i++){
if (arr[i] == v){
count++;
}
}
System.out.println(count);
}
}
➡️ n개의 원소를 하나씩 탐색하기 때문에 전체 시간복잡도는 O(n)
📌 알게 된 것
br.readLine().split(" ") vs StringTokenizer
br.readLine().split(" ")
- readLine() 으로 한 줄의 문자열을 읽고, split(" ")을 사용해서 공백을 기준으로 문자열을 분리함
- 분리된 문자열이 들어가 있는 배열을 반환
StringTokenizer
- nextToken() 메서드를 호출할 때마다 토큰을 추출해서 반환
( 미리 전체 토큰을 메모리에 저장해두는 것이 아니기 때문에 메모리 사용량이 적고 빠름 ) - 여러개의 공백이 있어도 이를 하나의 구분자로 고려
'STUDY > 알고리즘&코딩테스트' 카테고리의 다른 글
[백준] 11328. Strfry (JAVA) (0) | 2024.11.12 |
---|---|
[백준] 13300. 방 배정 (JAVA) (2) | 2024.11.05 |
[백준] 3273. 두 수의 합 (JAVA) (0) | 2024.11.01 |
[백준] 1475. 방 번호 (JAVA) (0) | 2024.10.31 |
[백준] 2577. 숫자의 개수 (JAVA) (1) | 2024.10.31 |