LinkedList
·
Algorithm/자료 구조 및 개념 정리
- LinkedList는 Node는 데이터 값과 다음 Node의 addrss를 저장함. - Linked List는 물리적인 메모리상에서 비연속적으로 저장됨 - 메모리상에서 불연속적으로 데이터가 저장됨 - 다음 node의 address를 통해 불연속적인 데이터를 연결하여 논리적 연속성을 보장함 - 데이터가 추가되는 시점에 메모리를 할당함(메모리를 효율적으로 사용함( - tree나 graph등 다른 자료구조 구현할 때 자주 쓰이는 기본 자료구조임 - 물리적으로 옮길 필요 없이 next address가 가리키는 주소만 변경하면 되기 때문에, 데이터 삽입 / 삭제는 O(1)의 시간 복잡도가 걸림 - Linked List는 조회시 O(n)이 걸림. 맨 처음 Node를 보고 그 다음 address 정보를 순차적으로..
문자열 검색
·
Algorithm/자료 구조 및 개념 정리
문자열 검색 - 어떤 문자열 안에 다른 문자열이 들어 있는지 조사하고, 들어 있다면 그 위치를 찾아 내는 것. 브루트 포스 - 선형 검색을 확장한 알고리즘 - 이미 검사를 진행한 위치를 기억하지 못하므로 브루트- 포스의 효율법은 좋지 않다. package basic; import java.nio.charset.StandardCharsets; import java.util.Scanner; public class BFMatch { static int bfMatch(String txt, String pat) { int pt = 0; // txt커서 int pp = 0; // pat 커서 while (pt != txt.length() && pp != pat.length()) { if (txt.charAt(pt)..
BOJ 2293
·
Algorithm/백준
package baekjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class BOJ2293 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] str = br.readLine().split(" "); /** * 1 2 3 4 5 6 7 8 9 10 * 1 1 1 1 1 1 1 1 1 1 1 * 2 0 1 1 2 2 3 3 4 4 5 * 5 0 0 0 0 1 ..
2866
·
Language/Java
package baekjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.HashSet; import java.util.Set; public class BOJ2866 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] line = br.readLine().split(" "); int[] num = Arr..
1351
·
Algorithm/백준
package baekjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.lang.reflect.Array; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.StringTokenizer; public class BOJ1351 { static Map map; static int p; static int q; static long answer(long num){ // 초항 : a의 0번째는 1 if(num == 0) return 1; // 만약 map이..
집합
·
Algorithm/자료 구조 및 개념 정리
집합 - 명확한 조건을 만족하는 자료의 모임 - 객관적으로 범위를 규정한 '어떤 것'의 모임 - 각각의 '어떤 것'을 요소라 함 - 집합에 포함되는 요소는 달라야 함, 가령 {1, 5, 1}과 같은 집합은 있을 수 없다. - 정수의 집합처럼 요소의 개수가 무한한 집합을 무한 집합이라고 함 - 요소의 개수가 유한한 집합을 유한 집합이라고 함 부분집합과 진부분집합 부분 집합 - A = {1, 3} B={1, 3, 5}일 경우, A의 모든 요소가 집합 B의 모든 요소이면, A는 B의 부분집합이고 'A는 B에 포함된다' 고 표기 => A ⊂ B 진부분 집합 집합 A의 모든 요소가 집합 B의 요소이면서 집합 A와 집합 B가 같지 않을때 'A는 B의 진부분집합이다'라 함 합집합 - 집합A와 집합B가운데 적어도 한쪽..
듣보잡 - java
·
Algorithm/백준
package baekjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class BOJ1764 { /** * * @param noHearArr : 듣지도 못한 String형 배열 * @param noSeeArr : 보지도 못한 String형 배열 * @return : 듣도 보도 못한 String형 배열 */ static String[] solution(String[] noHearArr, String[] noSeeArr) { // 1. 정답을 담을 ArrayList생성 List answerList = new ArrayList(); ..
Triplet
·
Algorithm/Codility
package codility.num6; import java.util.Arrays; public class Triplet { public int solution(int[] A) { // write your code in Java SE 8 Arrays.sort(A); // 1. 셋 다 양수 또는 음수일 경우, 뒤에서부터 3개 곱해주는게 best case int answer = A[A.length -1] * A[A.length -2] * A[A.length -3]; // 2. 맨 앞 두 수가 음수이고, 나머지 하나가 양수일 경우 // 맨 앞 두 수 * 맨 뒤 숫자 int answer2 = A[0] * A[1] * A[A.length -1]; // 두 값 중 큰 값 리턴 return Math.max(answ..
Codility - Distinct
·
Algorithm/Codility
https://app.codility.com/programmers/lessons/6-sorting/distinct/start/ Codility Your browser is not supported You should use a supported browser. Read more app.codility.com package codility.num6; import java.util.HashSet; public class Sorting { public int solution(int[] A) { // write your code in Java SE 8 // 중복된 값을 허용하지 않는 HashSet 사용 HashSet hs = new HashSet(); for(int a : A){ hs.add(a); } // S..
takoyummy
TakoHub