반응형

Java/백준알고리즘 111

[Java] 백준알고리즘 #11659 구간 합 구하기 4

주어진 수들의 구간합을 구하는 문제. 단순히 생각하면 다음과 같은 풀이를 구할 수 있다. // 해설참조 : sehyeok.tistory.com import java.io.IOException; import java.util.Scanner; public class Main { public static void main(String args[]) throws IOException { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); int[] num = new int[n]; for (int i = 0; i < n; i++) { num[i] = sc.nextInt(); } for (int i = 0; i < m; i..

[Java] 백준알고리즘 #7785 회사에 있는 사람

이름과 출입여부를 공백을 두고 입력받고, enter라면 출근, leave 라면 퇴근으로 할 때, 모든 입력이 끝난 후 회사에 남아 있는 사람의 이름을 출력하는 문제. 사전순의 역순으로 출력한다는 점에 주의할 것. Hashset을 이용하여 회사원들의 출입관리를 하면 될 듯 하다. 2023.10.17 - [Java/개념정리] - [Java] HashSet 에 대해 알아보자 [Java] HashSet 에 대해 알아보자 Set Interface 기본적으로 Set혹은 Set계열을 구현하는 클래스들은 다음과 같은 공통점이 있다. 중복되는 요소(원소)를 허용하지 않는다. 저장 순서를 유지하지 않는다. (LinkedHashSet 만 예외) HashSet HashS sehyeok.tistory.com 문자열 분리는 St..

[Java] 백준알고리즘 #14425 문자열 집합

N개의 문자열을 입력받고 이를 S라는 집합이라 할 때, M개의 문자열 중 몇 개가 집합 S에 포함되는가를 찾는 문제. HashSet을 이용하면 간단히 해결할 수 있을 듯 하다. 2023.10.17 - [Java/개념정리] - [Java] HashSet 에 대해 알아보자 [Java] HashSet 에 대해 알아보자 Set Interface 기본적으로 Set혹은 Set계열을 구현하는 클래스들은 다음과 같은 공통점이 있다. 중복되는 요소(원소)를 허용하지 않는다. 저장 순서를 유지하지 않는다. (LinkedHashSet 만 예외) HashSet HashS sehyeok.tistory.com 먼저 n과 m을 입력받는다. Scanner로 입력받는다면 nextInt()로 간단히 입력받을 수 있지만 BufferedR..

[Java] 백준알고리즘 #10815 숫자 카드

숫자카드를 가지고 있다면 1, 아니라면 0을 출력하는 문제. HashSet 기능을 이용한다면 간단히 해결할 수 있다. 2023.10.17 - [Java/개념정리] - [Java] HashSet 에 대해 알아보자 [Java] HashSet 에 대해 알아보자 Set Interface 기본적으로 Set혹은 Set계열을 구현하는 클래스들은 다음과 같은 공통점이 있다. 중복되는 요소(원소)를 허용하지 않는다. 저장 순서를 유지하지 않는다. (LinkedHashSet 만 예외) HashSet HashS sehyeok.tistory.com 첫 입력에서 add()메소드로 해쉬에 추가한 후, 두번째 입력에서 contains() 메소드를 이용해 해당 숫자를 포함하는지 아닌지를 판단하여 출력하면 된다. 두 가지 방식으로 해..

[Java] 백준알고리즘 #25501 재귀의 귀재

주어진 함수들을 이용해 입력받은 문자가 팰린드롬인지 확인하고, isPalindrome 함수 호출 결과 및 recursion 함수의 호출 횟수를 구하는 문제이다. recursion함수의 호출 횟수는 전역 변수를 통해 간단히 구할 수 있다. 전역 변수 count를 선언해주고, recusrion 함수 내에서 count를 증가시키는 구문만 넣어주면 쉽게 도출할 수 있다. 전체 코드는 다음과 같다. // 해설참조 : sehyeok.tistory.com import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { static int count = 0; // recursion ..

[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")); 이후 반복문을 통해 입력을 받고, 입력받은 문자열(사람)을 공..

반응형