프로그래밍/java
[백준] 10807번 문제 - 개수 세기 - JAVA(자바)
MG_세대
2023. 6. 20. 21:25
문제
총 N개의 정수가 주어졌을 때, 정수 v가 몇 개인지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거나 같으며, 100보다 작거나 같다.
출력
첫째 줄에 입력으로 주어진 N개의 정수 중에 v가 몇 개인지 출력한다.
위 문제를 보고 처음엔 정수를 어떻게 공백을 사이에 두고 받을까 하는 고민에 빠졋다..
고민끝에 아직 포스팅 하지 않았지만, 단어의 개수 세기에서 사용했던 split 메서드를 사용해 보기로 마음먹고 다음과 같이
코드를 짜 보았다.
package baekjoon;
import java.util.*;
public class b10807 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int A = sc.nextInt(); // 정수의 개수
sc.nextLine(); // 개행 문자('\n') 소비
String B = sc.nextLine(); // 정수를 입력하지만 string값으로받아
String arr[] = B.split(" "); // 공백을 기준으로 배열에 저장
String C = sc.next(); // 스트링 으로 정수를 받는다
int i ;
int count = 0;
for(i=0; i<A; i++) {
if(arr[i].equals(C)) { // 문자열 비교
count += 1; // 카운트 + 1
}
}
System.out.println(count);
}
}
사실 맥북 이클립스에서 오류가 떠서 실행이 되지않았던걸..
chat-gpt에게 살짝 물어봐서 개행문자 소비 및 문자열 비교 구문 수정을 하니..
정상적으로 작동하였다..
백준에서도 맞다고 인정해줌...
아래에는 위 코드가 틀렸다고하여, 새로 만든 코드이다 아래의 방법이 조금더 보통의 방법이지 않나 싶다.
import java.util.Scanner;
public class b10807_2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int A = sc.nextInt();
int[] B = new int[A];
int i;
int count = 0;
for (i = 0; i < A; i++) {
B[i] = sc.nextInt();
}
int C = sc.nextInt();
for (i = 0; i < A; i++) {
if (B[i] == C) {
count += 1;
}
}
System.out.print(count);
}
}
사실 처음에는 배열을 생성해서 첫 번째 for문까지 적었다가 스페이스바(공백)을 기준으로 입력을해도 입력이 되는지 모르고 포기하고 첫번째 방법으로 갔었었다..
하지만 나의 무지함이 문자열로도 정수를 받아 비교를 할 수 있는걸 알게된 개린이(개발자어린이)가 되었다.
이게..공부의 맛인듯 하다 너무재밌다 ㅎㅎ