분류 전체보기
-
[short tip]Mermaid문법, 노션 또는 draw.io로 코드 구조 시각화하기알고리즘 2023. 8. 16. 15:01
코드를 이해하기 위해서 시각적 그래프를 그릴 필요가 있다. 1. 먼저 chatGPT로 주어진 코드를 머메이드 코드로 변환하자 * mermaid 문법 : 순서도, 구조도를 나타내는 문법 https://chat.openai.com/ ChatGPT A conversational AI system that listens, learns, and challenges chat.openai.com https://sharegpt.com/c/RTp19sz Java DFS BFS Flowchart - A ShareGPT conversation This is a conversation between a human and a GPT-3 chatbot. The human first asks: import java.io.Buffe..
-
맵Map과 해시Hash의기본 개념알고리즘 2023. 8. 16. 12:37
맵Map 해시맵(Hash map) : 해시테이블(Hash table), 딕셔너리(Dictionary) 키(key)와 값(value)을 대응시켜 자료를 보관하는 자료 구조(like 사전) 정보를 찾는 기준이 되는 키와 그 키에 연결된 값으 대응 관계를 저장 예: 물품 이름(키)와 가격(값) 또는 재고(값)과. 학생 이름(키)와 성적(값) 키는 중복되지 않음 존재하는 키에 새 값을 넣으면 기존 값은 지워지고 새 값으로 덮어 써짐 키를 추가적으로 저장하기 때문에 공간 복잡도는 올라가지만, 모든 값을 검색할 필요가 없기 때문에 시간 복잡도, 즉 효율성이 개선됨. 해싱Hashing 해시 함수(hash function) 데이터의 효율적 관리를 목적으로 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수 이..
-
스택 구현하기 | Stack, ArrayDeque알고리즘 2023. 8. 10. 16:39
Stack으로 구현 Stack stack = new Stack(); // 끝 값 확인하는 것, 새로 추가하는 것, 가장 최신에 추가한 걸 밖으로 꺼내는 것. stack.push("리액트를 다루는 기술"); stack.push("정글북"); stack.push("이상한 나라의 앨리스"); System.out.println(stack); // 먼저 push된 순으로 안으로 들어가 있음 // 꺼내기 전에 확인하는 명령(peek) System.out.println(stack.peek()); // 가장 마지막에 넣은 값을 반환 후 삭제(pop) System.out.println(stack.pop()); System.out.println(stack); System.out.println(stack.pop()); Sy..
-
[백준] 1158번 요세푸스 문제 | 큐 활용, 자바 | 코딩테스트 풀이알고리즘 2023. 8. 10. 16:30
문제링크 : https://www.acmicpc.net/problem/1158 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayDeque; public class Main { public static void main(String[] args) throws IOException { // 입력 BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); String line = bf.readLine(); // 첫번째 줄 int N = Integer.parseInt(line.spli..
-
큐 구현하기 | ArrayList, LinkedList, ArrayDeque알고리즘 2023. 8. 10. 15:01
자바에서 큐Queue 자료 구조를 직접 지원하는 인터페이스는 없다. 대신 다음의 방법들로 큐를 쓸 수 있다. 1. ArrayList ArrayList를 활용해 직접 queue 클래스를 만들기 class MyQueue { private List list = new ArrayList(); // private 접근 // 큐 안에 x라는 요소를 저장합니다. public void enqueue(String x) { list.add(x); // 내부에 이미 생성된 리스트의 add(맨 끝에 저장) } // 맨 앞의 요소를 반환 (index 0) public String peek() { return list.get(0); // 들어간지 가장 오래 } // 맨 앞의 요소를 반환하고 제거 public String dequ..
-
스택과 큐의 기본 개념 | visualgo.net알고리즘 2023. 8. 10. 14:24
1. 큐 Queue '줄 서기', '터널' (앞을 처리하지 않으면 뒤를 처리 X) FIFO : First In First Out, 먼저 들어온 데이터가 먼저 나감 관련 메서드 인큐(enqueue) : 큐에 자료 한 개를 집어 넣는 동작 디큐(dequeue) : 큐 안에 있는 한 개를 꺼내는 동작 자바에는 큐 인터페이스가 없어서 LinkedList와 ArrayDeque를 통해 구현한다. index가 없고 처음(head)과 끝(tail)만 있음 새로운 데이터를 넣으면enqueue 끝에 붙음 데이터를 꺼내면dequeue 처음부터 나옴 2. 스택 Stack '접시 쌓기', '그릇' (위를 처리하지 않으면 아래 처리 X) LIFO : Last in First Out, 가장 나중에 들어온 데이터가 가장 먼저 나감 ..
-
[백준]11651번: 좌표 정렬하기 2 | 배열 정렬, 람다식 | 코딩테스트알고리즘 2023. 8. 10. 12:21
문제: https://www.acmicpc.net/problem/11651 import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { // 2차원 평면 x축, y축 // 입력, 계산, 출력 // 입력 : N개의 점(x, y) // - int x, int y -> int[] Scanner sc = new Scanner(System.in); int N = sc.nextInt(); // 점의 개수 N -> N개 만큼의 점(x, y쌍)이 존재 -> N번 반복 int[][] pointArr = new int[N][2]; // 감싸주는게 먼저 카운트가 들어가야함 for (in..
-
[프로그래머스] k번째 수 | 정렬 | 코딩테스트알고리즘 2023. 8. 9. 17:41
문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42748 import java.util.*; class Solution { public int[] solution(int[] array, int[][] commands) { //입력 : array //입력2 : i~j번째. k번째의 수. -> commands int[][] // -> command int[] -> [i, j, k] // i, j, k도 인덱스가 아니라 일반적인 수(1부터 시작) /* 배열을 하면 _> 2, 3, 5, 6 크기 순서대로 줄을 세우는 것. (1) 어떤 크기를 기준으로 삼을 것인가? (2) 그 크기를 어떤 방향으로 정리할 것인가? (작은 순, 큰 순 ...) (..