-
[백준]개수 세기 | 배열 | 코딩테스트알고리즘 2023. 8. 9. 15:41
- 백준은 표준입출력 문제. 입력을 매개변수로 받는 게 아니라 직접 Scanner로 받아줘야 함
import java.util.Scanner; class Main { public static void main(String[] args) { // 입력 고정 Scanner sc = new Scanner(System.in); // 표준입출력 문제는 입력을 매개변수로 받는 게 아니라 직접 Scanner로 받아줘야 함 /* * 입력: 총 N개의 정수. 정수 v * - 1 : 정수의 개수(1~100) * - 2 : 정수가 '공백'으로 구분 * - 2-1 : nextInt로 끊어서 받을 수 있음 * - 3 : 찾으려는 정수 v * - 출력 : 정수 v가 몇 개인지 */ // 첫째 줄 N int N = sc.nextInt(); // System.out.println(N); // 둘째 줄 공백으로 구분된 정수가 N개만큼 int[] arr = new int[N]; for (int i = 0; i < N; i++) { // System.out.println("index: " + i); // System.out.println("value: " + sc.nextInt()); arr[i] = sc.nextInt(); // arr에 저장 } // 세번째 줄 int v = sc.nextInt(); // System.out.println("v: " + v); int count = 0; for (int j = 0; j < N; j++) { // System.out.println(arr[j]); // arr에 저장되어 있는 값을 바탕으로 // v와 일치되는 값을 찾는다 if (arr[j] == v) { count++; } } System.out.println(count); // 정답제출용 출력 } }
[chatGPT 리팩토링]
import java.util.Scanner; class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int[] arr = new int[N]; for (int i = 0; i < N; i++) { arr[i] = sc.nextInt(); } int v = sc.nextInt(); int count = countOccurrences(arr, v); System.out.println(count); } static int countOccurrences(int[] arr, int v) { int count = 0; for (int num : arr) { if (num == v) { count++; } } return count; } }
이 리팩토링된 코드는 입력과 카운트 로직을 countOccurrences 함수로 분리하여 코드의 재사용성과 가독성을 높였습니다. 이로 인해 main 함수는 입력을 처리하고 결과를 출력하는 역할만 담당하게 되었습니다.
'알고리즘' 카테고리의 다른 글
[프로그래머스] k번째 수 | 정렬 | 코딩테스트 (0) 2023.08.09 [프로그래머스] 제일 작은 수 제거하기 | 배열, 리스트 | 코딩테스트 (0) 2023.08.09 [프로그래머스]문자열 내 p와 y의 개수 : chatGPT의 활용방안까지 - 코딩테스트 (0) 2023.08.09 2. 탐색과 정렬 (0) 2023.08.09 1. 알고리즘 입문 (0) 2023.08.09