반응형

공부 261

[Java] 백준알고리즘 #10870 피보나치 수 5

재귀함수를 이용해서 피보나치 수를 구하는 방법. 피보나치 수는 0번째 수가 0, 1번째 수가 1, 2번째 수부터는 0번째 수 + 1번째 수 ... 과정을 거치므로 재귀함수를 이용하기에 적합하다. 재귀함수를 이용하여 팩토리얼을 구했을 때 처럼 fibo함수를 이용한다면 fibo(n) = fibo(n-1) + fibo(n-2) 가 될 것이다. 위 과정을 반복하다 보면, fibo(0), fibo(-1) ... 처럼 무한히 끝나지 않을 수 있으니, 종료 조건을 명시해주어야 한다. fibo(n-1) + fibo(n-2)가 각각 fibo(1)과 fibo(0) 일 때, 이 루프가 끝나게 되므로 fibo(1)은 1, fibo(0)은 0으로 명시해준다. (종료조건 충족) 전체 코드는 다음과 같다. // 해설참조 : seh..

[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

미국 주식 고배당주 NRO (Neuberger Berman Real Estate Securities Income Fund Inc)

2023년 10월 16일 기준. 미국 주식중 배당수익률이 높은 NRO라는 종목에 대해 알아보자. NRO는 높은 당기순이익을 우선적으로 추구하면서 부가적으로 시세차익을 남기는 것을 목표로 한다. 이를 위해서 리츠와 부동산 회사의 지분을 섞은 포트폴리오를 구성한다. 부동산 펀더멘탈 분석에 노하우가 있어 저평가된 부동산 회사를 찾을 수 있다고 한다. NRO는 월배당을 제공하는데, 현재 배당수익률 약 13.61%로 높은 수익률을 보여주고 있다. 이는 배당금은 동일하나 주가가 하락함에 있어서 수익률이 높아지는 것으로 볼 수 있다. 100%를 부동산 주식에 투자하고 있고, 이외에 35.92%의 채권과 1.59%의 현금을 보유하고 있는 것으로 나타난다. 총합이 100%를 넘는 이유는 부채를 끼고 투자하고 있기 때문...

투자/해외주식 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 로 나타낼 수 있다. 이를 코드..

반응형