| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
Tags
- restTemplate
- 핵심가이드
- 개발자
- 스프링부트
- spring boot
- 프로그래머스
- SpringBoot
- 백엔드
- 컴퓨터 구조
- JPA
- queue
- 제로베이스
- 연관관계
- LinkedList
- Java
- 백엔드공부
- SpringSecurity
- QueryDSL
- array
- actuator
- 백준
- 백엔드스쿨
- JWT
- ORM
- 자료구조
- 서버
- spring
- 컴퓨터 공학
- TestCode
- error
Archives
- Today
- Total
be_better
[백준] 10807번 - 개수 세기 본문
목차
💎 문제 링크
10807번: 개수 세기
첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거
www.acmicpc.net
📝 문제

✍🏻 입력 & 출력

🤔 풀기 전에 생각하기
기본적인 빈도 수 문제
입력받는 데이터가 int 정수형이기 때문에 배열의 인덱스로 쉽게 빈도수를 증가시킬 수 있다.
입력받는 데이터는 -100부터 100이기 때문에 배열의 크기를 201로 맞춰야 한다.
✨ 풀이
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt(); // N 입력
int[] frequency = new int[201]; // 빈도수 저장 -100부터 100까지의 정수 총 201개
for (int i = 0; i < N; i++) {
int n = scanner.nextInt();
frequency[n+100]++; // -100을 입력받으면 100을 더해서 0번 인덱스에 저장
}
int value = scanner.nextInt();
System.out.println(frequency[value+100]); // 입력할 때 100을 더해줬기 때문에 찾는값도 100을 더해줌
}
}
이 문제는 -100부터 100이기 때문에 배열의 크기를 많이 할당하지 않아도 된다.
하지만 숫자가 더 커지면 메모리상 에러를 일으킬 수 있기 때문에
입력받는 값을 배열에 그대로 넣고 원하는 데이터와 배열의 값이 같다면 count를 증가시키는 코드로도 해결할 수 있다.
int[] arr = new int[N]; // N의 크기의 배열 선언
for (int i = 0; i < N; i++) {
arr[i] = scanner.nextInt(); // 배열에 입력받는 수 그대로 추가
}
int value = scanner.nextInt(); // 찾는 값 입력
int count = 0;
for (int i : arr) {
if (i == value) {
count++; // 배열을 돌면서 찾는값과 같다면 count 증가
}
}'코딩테스트 > 백준' 카테고리의 다른 글
| [백준] 2003번 - 수들의 합 2 (0) | 2023.08.29 |
|---|---|
| [백준] 11725번 - 트리의 부모 찾기 (1) | 2023.08.22 |
| [백준] 2830번 - 행성 X3 (0) | 2023.08.15 |
| [백준] 24174번 - 힙 정렬 2 (0) | 2023.08.13 |
| [백준] 1158번 - 요세푸스 문제 (0) | 2023.08.11 |