반응형

java 94

[Java] 백준알고리즘 #27433 팩토리얼 2

재귀함수를 사용해 팩토리얼 값을 계산하는 문제. n! 은 n x (n-1)! 로 나타낼 수 있고, (n-1)! 은 다시 (n-1) x (n-2)! 로 나타낼 수 있다. 여기서 !(팩토리얼)을 어떤 함수 fact라고 한다면, n!은 fact(n)이고, 이는 n x fact(n-1)이 될 것이다. 위 fact함수에서 n이 1이 될 경우 fact(1) 은 1 x fact(0) 가 되어 결과가 0이 되어버릴 것이다. 뿐만 아니라, 위 과정을 반복하다보면 n x (n-1) x ... x 2 x 1 x 0 이 될 것이고, 이는 음수로 무한히 이어지게 된다. 따라서 재귀함수에서는 종료조건을 반드시 명시해주어야 한다. 때문에 조건문을 통해 n이 1보다 큰 경우로 한정하고, 1 이하가 되는 경우에는 x 1로 자기 자신을..

[Java] 백준알고리즘 #2108 통계학

입력받은 값들의 산술평균, 중앙값, 최빈값, 범위를 출력하는 문제. 1. 산술평균 산술평균은 입력받은 값들을 차례로 더한 후, 수의 개수를 나누면 간단하다. 다만 단순히 / 로 나누는 것이 아닌 Math.round함수를 이용해서 반올림된 값을 구할 수 있다. BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int[] ary = new int[n]; int sum = 0; // 평균값을 위한 합계 for (int i = 0; i < n; i++) { ary[i] = Integer.parseInt(br.readLine()); sum += ary[i]; ..

[Java] 백준알고리즘 #26069 붙임성 좋은 총총이

사람들은 두명씩 만나는데, 무지개 춤을 추는 사람을 만나면 이 사람은 이후 무지개댄스를 춘다. 이 때, 무지개 춤을 추는 사람의 수를 구하는 문제. 앞선 인사성 밝은 곰곰이와 비슷한 문제이다. 2023.10.17 - [Java/백준알고리즘] - [Java] 백준알고리즘 #25192 인사성 밝은 곰곰이 이 역시 HashSet을 이용하면 간단하게 문제를 해결할 수 있다. 2023.10.17 - [Java/개념정리] - [Java] HashSet 에 대해 알아보자 먼저 초기값을 지정하여 (무지개 춤을 추는 ChongChong) Hash를 생성한다. HashSet user = new HashSet(Arrays.asList("ChongChong")); 이후 반복문을 통해 입력을 받고, 입력받은 문자열(사람)을 공..

[Java] 백준알고리즘 #25192 인사성 밝은 곰곰이

ENTER 를 기준으로, 채팅방에 들어온 사람이 곰곰티콘을 사용한 회수를 구하는 문제. ENTER가 입력된 시점을 기준으로 모든 사용자들은 첫번째 채팅에 곰곰티콘을 사용하고, 두번째 채팅부터는 사용하지 않는다. 결국 사용자의 중복 여부를 알아보는 문제이기 때문에 최근에 알아보았던 HashSet 기능을 활용하면 될 것이다. 2023.10.17 - [Java/개념정리] - [Java] HashSet 에 대해 알아보자 먼저 입력값이 ENTER인지 판단한다. ENTER이라면 현재까지의 HashSet에 크기(사용자 수)를 count(곰곰티콘을 사용한 횟수)에 추가하고, HashSet을 리셋해준다.(새로운 사람이 들어왔으므로 첫 채팅은 곰곰티콘을 사용) ENTER가 아닌 사용자라면 HashSet에 입력받은 사용자를..

[Java] Scanner 와 BufferedReader 차이점

흔히 자바에서 입력값을 처리하기 위한 용도로 Scanner를 사용한다. // 해설참조 : sehyeok.tistory.com import java.util.Scanner; public class Main { public static void main(String args[]) { Scanner sc = new Scanner(System.in); int i = sc.nextInt(); // int형 입력받기 double d = sc.nextDouble(); // double형 입력받기 Long l = sc.nextLong(); // long형 입력받기 String text = sc.nextLine(); // String형(문자열) 입력받기 Boolean b = sc.nextBoolean(); // Bool..

Java/개념정리 2023.10.16

[Java] 백준알고리즘 #1037 약수

어떤 수 N에 대해 1과 자기 자신(N)을 제외한 약수들이 주어졌을 때, 어떤 수 N을 찾는 문제. N에대한 약수는 제곱수가 아니라면 짝수개의 순서쌍으로 주어질 것이다. 때문에 이 약수들 중에서 가장 작은 수와, 가장 큰 수를 곱하면 자연스럽게 N을 구할 수 있다. (제곱수이며 약수가 1개인 경우는 가장 작은수, 가장 큰 수가 같아짐) 나는 2가지 방법으로 풀어보았다. 첫번째 약수를 배열로 받아 오름차순 정렬한 후, 첫번째 인덱스와 마지막 인덱스를 곱함. // 해설참조 : sehyeok.tistory.com import java.util.Scanner; public class Main { public static void main(String args[]) { Scanner sc = new Scanner..

[Java] 백준알고리즘 #11050 이항 계수 1

먼저 이항 계수가 무엇인지 알아보자. n과 k에 대해 nCk 즉 n개의 물건에서 k개를 고르는 경우의 수를 나타낸다. nCk에 대해서는 다음 글 참조 2021.03.26 - [Java/백준알고리즘] - [Java] 백준알고리즘 #1010 다리 놓기 [Java] 백준알고리즘 #1010 다리 놓기 서쪽의 사이트 n 개와 동쪽의 사이트 m개를 이을 다리를 놓을 때, 이 다리를 놓는 경우의 수를 구하는 문제이다. 구하는 방법은 간단하다. m개의 사이트에서 n개를 고르는 경우의 수는 m Combination n sehyeok.tistory.com nCk는 n x (n - 1) x (n - 2) x ... x (n - k) / k x (k - 1) x (k - 2) x ... x 1 로 나타낼 수 있다. 이를 코드..

[Java] 백준알고리즘 #24723 녹색거탑

탑을 내려오는 경우의 수를 찾는 문제. 블록은 인접한 아래층의 블록으로 내려오므로, 예제에서처럼 1층에서는 2개, 2층에서는 4개의 경우의 수가 발생한다. 3층의 경우를 보면 2층의 각 경우의 수마다 내려올 수 있는 선택지가 2개씩 늘어나므로 경우의 수는 8개가 된다. 1층은 2^1 2층은 2^2 3층은 2^3 ... 이 되는 것을 알 수 있다. 코드는 매우 간단하다. // 해설참조 : sehyeok.tistory.com import java.util.Scanner; public class Main { public static void main(String args[]) throws Exception { Scanner sc = new Scanner(System.in); int n = sc.nextInt(..

[Java] 백준알고리즘 #15439 베라의 패션

N개 색상의 상의와 하의가 있을 때, 다른 색으로 조합하는 경우의 수를 찾는 문제. 10개가 있다고 가정하면 1번 상의는 1번 하의와 매칭할 수 없다(같은 색이므로) 즉 1번 상의와 매칭 가능한 하의의 수는 9개. 2번 상의도 마찬가지로 2번 하의를 제외한 나머지 하의와 매칭할 수 있으므로 경우의 수는 9. 3번 상의도 마찬가지로 3번 하의를 제외하므로 9개. ... 10번 상의는 10번 하의를 제외하므로 9개 이와같은 과정으로 볼 때 10개의 상의가 있다고 하면 각각이 9개의 하의와 매칭되므로 경우의 수는 10 x 9 가 되겠다. 이를 공식화하면 N개의 옷이 있다고 할 때, 조합하는 경우의 수는 N x (N - 1) 이 된다. // 해설참조 : sehyeok.tistory.com import java...

반응형