https://www.acmicpc.net/problem/10807
10807번: 개수 세기
첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거
www.acmicpc.net
- 문제
- 풀이
맨 처음 생각한 코드!
/*
* 배열 생성 방법은 2가지이다.
* 1. 데이터들의 값을 알고 있을 때
*
* 형태:
* 자료형[] 변수 = {데이터1, 데이터2,...}
*
* 예시 :
* int[] num = {1, 2, 3}
*
* 2. 배열의 값은 모르지만, 향후 값을 저장하기 위한 배열 생성
*
* 형태 :
* 자료형[] 변수 = new 자료형[배열크기];
* 변수[0] = 데이터 값;
* 변수[1] = 데이터 값;
*
* 예시 :
* int[] num = new int[3];
* num[0] = 10;
* num[1] = 15;
* num[2] = 13;
*
* 현재, 총 N개의 정수가 주어졌을 때 정수 v가 몇개인 지 구하는 프로그램이다.
* 따라서 2번의 방법을 사용한다.
*
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] num = new int[11];
System.out.println("배열의 수를 입력하세요");
System.out.println("배열안에 들어갈 정수를 입력하세요");
Scanner sc2 = new Scanner(System.in);
System.out.println("배열에서 찾으려는 정수를 입력하시오");
int find = sc2.nextInt();
for(int i = 0; i < num.length; i++) {
num[i] = sc.nextInt();
}
int n=0;
for(int i = 0; i < num.length; i++) {
if (find == num[i]) {
n+=1;
}
}
System.out.println(n);
}
}
잉.. 왜 안되지?? 순서가 잘못된 것 같다..
처음 sc변수를 입력한 뒤, 배열이 생성되고 sc2를 실행하기 전에 for문이 실행되어 배열 안에 숫자를 저장한다.
그 후 프로그램이 끝나서 sc2는 실행되지 않고 종료된다.
그래서 순서를 바꾸었다!
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] num = new int[11];
System.out.println("배열의 수를 입력하세요");
System.out.println("배열안에 들어갈 정수를 입력하세요");
for(int i = 0; i < num.length; i++) {
num[i] = sc.nextInt();
}
Scanner sc2 = new Scanner(System.in);
System.out.println("배열에서 찾으려는 정수를 입력하시오");
int find = sc2.nextInt();
int n=0;
for(int i = 0; i < num.length; i++) {
if (find == num[i]) {
n+=1; //n++
}
}
System.out.println(n);
}
}
바꾼 후에는 잘 실행된다.
그런데.. 실행결과가 마음에 들지 않는다. print문이 단계별로 진행될 때마다 나왔으면 좋겠다.
그래서 배열의 수를 11개로 정하지 않고, 변수로 놓았다.
그리고, 스캐너를 또 만들 필요가 없는 것 같아서(스캐너도 다시 공부하기 !!) 지웠다.
public static void main(String[] args) {
System.out.println("배열의 수를 입력하세요");
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[] num = new int[N];
System.out.println("배열안에 들어갈 정수를 입력하세요");
for(int i = 0; i < num.length; i++) {
num[i] = sc.nextInt();
}
System.out.println("배열에서 찾으려는 정수를 입력하시오");
int find = sc.nextInt();
int n=0;
for(int i = 0; i < num.length; i++) {
if (find == num[i]) {
n+=1;
}
}
System.out.println(n);
}
}
백준 채점에 넣을 때는 class명은 Main으로 하고, print문을 빼서 넣어야 한다.
- 정답
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[] num = new int[N];
for(int i = 0; i < num.length; i++) {
num[i] = sc.nextInt();
}
int find = sc.nextInt();
int n=0;
for(int i = 0; i < num.length; i++) {
if (find == num[i]) {
n+=1;
}
}
System.out.println(n);
}
}
- 참고 블로그
https://m.blog.naver.com/heartflow89/220950491600
[JAVA/자바] 배열(Array) 선언 및 사용 방법
배열이란? 동일한 자료형(Data Type)의 데이터를 연속된 공간에 저장하기 위한 자료구조이다. 즉, ...
blog.naver.com
참고한 배열 개념 블로그이다.
'JAVA > [백준] 코테' 카테고리의 다른 글
[백준]_배열 10807번 개수 세기 - 자바(JAVA) (1) | 2022.12.20 |
---|