달팽이 순회2
·
Algorithm/자료 구조 및 개념 정리
import java.util.Scanner; public class Main { public static final int MAX_VAL = 100; // 동 남 서 북 public static int[] dx = new int[]{0, 1, 0, -1}; public static int[] dy = new int[]{1, 0, -1, 0}; public static char[][] arr = new char[MAX_VAL][MAX_VAL]; public static int moveDirection = 0; public static boolean inRange(int x, int y, int n, int m) { return (0
달팽이 순회
·
Algorithm/자료 구조 및 개념 정리
내가 제출한 답: import java.util.Scanner; public class Main { public static final int MAX_SIZE = 100; // 동 남 서 북 public static int[] dx = new int[] {0, 1, 0, -1}; public static int[] dy = new int[] {1, 0 ,-1 , 0}; public static int[][] arr = new int[MAX_SIZE][MAX_SIZE]; public static int moveDir = 1; public static int x = 0; public static int y = 0; public static boolean inRange(int x, int y, int n, i..
격자 탐색 템플릿
·
Algorithm/자료 구조 및 개념 정리
public static boolean inRange(int x, int y) { return (0
시계 / 반시계 방향 회전 템플릿
·
Algorithm/자료 구조 및 개념 정리
import java.util.Scanner; public class Main { public static int[] dx = new int[]{ 1, 0, -1, 0 }; public static int[] dy = new int[]{ 0, -1, 0, 1 }; public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next(); int x = 0; int y = 0; int current = 3; for(int i = 0; i < str.length(); i++){ if(str.charAt(i) == 'L') { current = ( current - 1 + 4 ) % 4; }else if..
이진트리 순회
·
Algorithm/자료 구조 및 개념 정리
class Node { int data; Node lt, rt; public Node(int val) { data = val; lt = rt = null; } } public class Dfs { // 객체의 주소를 참조함 Node root; public void DFS(Node root){ if(root == null) return; else{ DFS(root.lt); // 중위 순회 System.out.print(root.data + " "); DFS(root.rt); } } public static void main(String[] args) { Dfs tree = new Dfs(); tree.root = new Node(1); tree.root.lt = new Node(2); tree.root.r..
Array와 LinkedList의 차이
·
Algorithm/자료 구조 및 개념 정리
- Array는 메모리 상에서 연속적으로 데이터를 저장하는 자료구조 - Linked List는 메모리상에서는 연속적이지 않지만, 각각의 원소가 다음 원소의 메모리 주소값을 저장함 - Array의 경우 O(1) - Linked List는 O(n)의 시간 복잡도를 가짐 - Array의 경우 O(n) - Linked List는 O(1) -> 그러나 추가/ 삭제를 하려는 index까지 도달하는데 O(n)시간이 걸리기 대문에 실질적으로 Linked List도 추가/삭제 식에 O(n) 시간이 걸림 - 얼마만큼의 데이터를 저장할지 미리 알고 있고, 조회를 많이 한다면 array를 사용하는 것이 좋음 - 몇개의 데이터를 저장할지 불확실하고 삽입 삭제가 잦다면 Linked List를 사용하는 것이 좋다. 이렇듯, Arr..
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 ..
takoyummy
'Algorithm' 카테고리의 글 목록