[Java]/문법, 자료구조, 알고리즘 16

HashMap

HashMap은 Map interface를 구현한 대표적인 Map Collection(데이터의 집합)이다. Map은 Key와 Value로 구성된 Entry 객체를 저장하는 구조의 자료구조이고, 이 때 Key와 Value는 둘 다 객체이다. Value는 중복저장이 가능하지만 Key는 중복저장이 불가능하다. 동일한 키로 저장 시 기존값을 삭제하고 해당 Key를 갖는 새로운 값으로 저장된다. HashMap 생성 HashMap 생성 HashMap map = new HashMap(); HashMap 생성 시, 타입 파라미터 생략 HashMap map = new HashMap(); HashMap 생성 시, HashMap map_1의 모든 값을 가진 HashMap 생성 HashMap map = new HashMap(..

소수 (에라토스테네스의 체)

자연수 N을 입력받고, 1부터 N까지의 소수의개수를 출력해야 할 경우 편입했을 당시 학교 온라인저지에서 풀었던 코드를 발견했는데 각각 숫자에 대해 2부터 x-1까지 반복문을 돌려 나머지==0 인 경우가 있으면 소수가 아님을 판별하는 brute force 방식, 전체 탐색 방식의 코드였다. O(N)의 시간복잡도를 갖는 비효율적인 방법이지만 1학년 초반의 수업이었음을 감안하여 Time Limit Exceeded가 발생하지 않는 테스트케이스들을 주셨던게 아닐까 한다.. 다음 방법은 N의 약수들이 대칭을 이루고 있다는 성질을 이용한 방법으로, N=20일 때 약수는 1, 2, 4, 5, 10, 20 이고 1과 N을 제외하고, 4와 5는 4*5=20 으로 대칭 관계이기 때문에 굳이 5까지 판별할 필요가 없다는 점을..

String 클래스 메소드 정리

startsWith : 문자열이 지정한 문자로 시작하는지 (대소문자 구별) String string = "abcdea"; System.out.println(string.startsWith("a")); //true System.out.println(string.startsWith("b")); //false endsWith : 문자열이 지정한 문자로 끝나는지 (대소문자 구별) String string = "abcdea"; System.out.println(string.endsWith("a")); //true System.out.println(string.endsWith("b")); //false equals : 두 개의 String을 비교해서 같은지 String string = "abc"; System.ou..

StringBuilder, StringBuffer

문자열 이어붙이기 StringBuilder에는 연결하고자 하는 문자열을 넣어 붙일 수 있는 append()라는 메소드가 있다. 하지만 평소 문자열을 이어붙일 때 String a = "문자열을"; System.out.println(a); String a = a + "붙여보자"; String a = a; System.out.println(a); input output 문자열을 문자열을붙여보자 이런 간단한 방법을 사용했는데(혹은 concat 메소드) 왜 굳이 StringBuilder.append() 를 사용하는 것인지 궁금했고, 둘의 차이를 알아보았다. 메모리 할당과 해제 📢 And you know, object create always takes more time than other operations, …..

조합(Combination)

위 식을 재귀를 사용해 짜면, import java.util.Scanner; public class Main07 { int[][] temp = new int[35][35]; //숫자가 커지면 소요 시간이 기하급수적으로 커짐 // 이를 방지하기 위한 배열 public int Combination(int n, int r) { if(temp[n][r] > 0) return temp[n][r]; if(n==r || r==0) return 1; else return temp[n][r] = Combination(n-1, r-1) + Combination(n-1, r); } public static void main(String[] args) { // TODO Auto-generated method stub Main..

Java 배열 정렬 방법

배열의 정렬을 손쉽게 할 수 있는 방법에는 Arrays.sort가 있다. 오름차순 정렬은 다음과 같다. private void arraySort(){ int[] arr = new int[]{5,3,1,4,2}; Arrays.sort(arr); System.out.println(Arrays.toString(arr)); // [1,2,3,4,5] } arr 혹은 arr.toString() 출력 시 ⇒ [I@2133c8f8 (배열의 주소값이 출력) Arrays.toString(arr) 출력 시 ⇒ [1, 2, 3 ,4 ,5] (배열 값 출력) 내림차순 정렬에는 Collections.reverseOrder() 를 사용하면 된다. private void arraySort(){ int[] arr = new int[..