반응형

java 94

[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] HashSet 에 대해 알아보자

Set Interface 기본적으로 Set혹은 Set계열을 구현하는 클래스들은 다음과 같은 공통점이 있다. 중복되는 요소(원소)를 허용하지 않는다. 저장 순서를 유지하지 않는다. (LinkedHashSet 만 예외) HashSet HashSet은 Set 인터페이스에서 지원하는 구현 클래스이기 때문에 Set의 성질을 그대로 상속받는다는 것이 특징이다. 여기서 HashSet 은 Set의 특징에 더해 null값을 허용해주는 특징을 하나 더 가진다. 중복되는 요소(원소)를 허용하지 않는다. 저장 순서를 유지하지 않는다. null값을 허용한다. 이러한 HashSet은 어떨 때 쓰이면 좋을까? 데이터가 정렬되어있을 필요도 없고, 빠르게 중복 여부만 확인하면 되는 경우에 사용하기 좋다. 예를 들면 회원 가입시 아이디..

Java/개념정리 2023.10.30

[Java] 배열 정렬하기 (Arrays.sort(), Collections.reverseOrder() 사용)

Arrays.sort() 자바에서 배열이나 리스트를 정렬하고 싶을 때 java.util.Arrays 클래스의 sort() 메서드를 사용하면 따로 정렬 알고리즘을 짜지 않고도 한번의 메소드 호출로 간편하게 배열이나 리스트를 정렬할 수 있다. Arrays클래스는 배열의 복사, 항목 정렬, 검색과 같은 배열을 조작하는 기능을 가지고 있다. Arrays.sort(배열); 위와 같이 괄호안에 정렬할 대상이 되는 배열을 넣어주기만 하면 돼서 매우 간편하다. 이는 int형, String형 모두 오름차순 정렬에 사용할 수 있다. 그렇다면 내림차순 정렬은 어떻게 하면 될까? Arrays.sort() 메소드를 이용해 오름차순으로 정렬해놓았으니, 이를 역순으로 보여준다면 간단히 해결 할 수 있다. // 해설참조 : sehy..

Java/개념정리 2023.10.30

[Java] 문자열 분리 (split, StringTokenizer 사용법)

문자열을 입력 받을 때 공백이 포함된 상태로 여러개의 입력을 받는 경우가 있다. 대표적으로 BufferedReader를 이용하여 입력받을 때는 줄 단위로 입력을 받기 때문에 여러 문자들을 나열한 문자열을 입력받는다면 이를 분리해주는 작업이 필요하다. 이 때 사용할 수 있는 split() 메소드와 StringTokenizer 클래스에 대해 알아보자 split() 기본 사용법 String a = br.readLine();// 입력 문자열 String[] ary1 = a.split(" ");// 공백 기준으로 문자열 분리 String[] ary2 = a.split(" ", 3);// 공백 기준으로 문자열 분리, 3개까지만 자름 split 함수의 첫번째 인자로는 정규식이 들어갈 수 있고, 빈 문자열도 하나의 문..

Java/개념정리 2023.10.27

[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..

반응형