본문 바로가기

Portpolio/java_algo_interview23

자바 알고리즘 인터뷰 12. 그래프 이 문서는 baeldung의 문서를 번역하여 참조했습니다. https://www.baeldung.com/java-graphs 먼저 그래프의 구성요소에 대해 알아보자. 그래프는 정점(Vertex)과 간선(Edge)으로 구성된다. 여기서 간선과 정점의 개수를 파악해보자. 정점은 5개, 간선은 6개로 구성되어있다. 그래프는 세 가지 종류로 구성된다. 크게 무방향 그래프, 방향 그래프, 가중치 그래프로 나뉜다. 무방향 그래프는 방향이 없는 간선이 두 정점을 연결하는 그래프이다. 방향 그래프는 방향이 있는 간선이 두 정점을 연결하는 그래프이다. 가중치 그래프는 각 간선마다 가중치가 설정되어 있는 그래프이다. 그래프는 비선형 자료구조이다. 연결리스트, 스택, 큐와 같은 선형 자료구조와는 다른 방법으로 표현 방법을 .. 2024. 2. 16.
자바 알고리즘 인터뷰 11. 해시 테이블 2024. 2. 16.
자바 알고리즘 인터뷰 10. 데크, 우선순위 큐 2024. 2. 16.
자바 알고리즘 인터뷰 09. 스택, 큐 [ch9/P23] L225. 큐를 이용한 스택 구현 import java.util.LinkedList; import java.util.Queue; public class P23 { private Queue queue1; private Queue queue2; public P23() { queue1 = new LinkedList(); queue2 = new LinkedList(); } public void push(int x) { queue1.offer(x); } public int pop() { while (queue1.size() > 1) { queue2.offer(queue1.poll()); } int topElement = queue1.poll(); swapQueues(); return topEle.. 2023. 12. 31.
자바 알고리즘 인터뷰 08. 연결 리스트 //공통적으로 쓰이는 클래스 class ListNode { int val; ListNode next; ListNode(int val) { this.val = val; } public static void printList(ListNode head) { ListNode current = head; while (current != null) { System.out.print(current.val + "-> "); current = current.next; } System.out.print("\n"); } } [ch8/P13] L234. 팰린드롬 연결 리스트 import java.util.Deque; import java.util.LinkedList; public class P13 extends ListNod.. 2023. 12. 31.
자바 알고리즘 인터뷰 07. 배열 [ch7/P7] L1. 두 수의 합 import java.util.Arrays; import java.util.HashMap; import java.util.Map; public class P7 { public static void main(String args[]) { int[] nums = {2, 7, 11, 15}; //int[] 배열 int target = 9; //합으로 나와야 하는 수 System.out.println(Arrays.toString(twoSum(nums, target))); } //brute force, hashmap을 이용하기 public static int[] twoSum(int[] nums, int target) { Map map = new HashMap(); for(int.. 2023. 12. 31.
자바 알고리즘 인터뷰 06. 문자열 처리 [ch6/P1] L125. 유효한 팰린드롬 - 대괄호와 캐럿 기호, 범위를 나타내는 하이픈 기호를 통해 정규 표현식의 개념을 사용함 public class P1 { public static void main(String args[]) { String input = "AMAIIAMA"; P1 obj = new P1(); boolean isPalindrome = obj.isPalindrome(input); System.out.println(isPalindrome); } public boolean isPalindrome(String s) { String sLower = s.toLowerCase(); String sRemoved = sLower.replaceAll("[^a-zA-Z0-9]", ""); //정규표.. 2023. 12. 31.
자바 알고리즘 인터뷰 05. 빅오 표기법 보통 시간 복잡도를 구할 때는 연산 횟수를 고차 다항식으로 나타내서 차수로 표기하는 방법을 사용한다 - O(1) : 해시 테이블 조회, 삽입 연산 / 연결리스트 끝 값 삽입 연산 - O(log n) : 이진 탐색 - O(n) : 리스트에서 최대값이나 최소값 찾기 - O(n*log n) : 병합 정렬, java의 DualPivotQuicksort 방식을 사용하는 Arrays.sort()의 평균 - O(n^2) : 버블 정렬, Arrays.sort()의 최악 - O(2^n) : 피보나치 재귀 함수 2023. 12. 26.
자바 알고리즘 인터뷰 04. 자료형 -자료형의 종류 - 원시 자료형 - 참조 자료형 - 언어별 자료형 구성 - 코틀린, 파이썬 : 참조 자료형 - 자바: 원시, 참조 자료형 혼합 - C언어: 원시 자료형 - 컬렉션 프레임워크 - HashMap.java - HashSet.java - ArrayList.java - ArrayDeque.java - TreeMap.java - TreeSet.java - LinkedList.java - 임의 정밀도 정수형 자료형 - BigInteger 2023. 12. 26.
자바 알고리즘 인터뷰 03. 코틀린 - 코틀린은 제트브레인 사에서 만든 프로그래밍 언어 - 인텔리제이 IDE를 서비스하는 회사 - 안드로이드 앱개발 분야에서 활발하게 사용되기 시작 - 학교나 연구소에서 만들어진 다른 많은 프로그래밍 언어에 비해서 업계의 피드백이 많이 반영된 언어 - Null Safety가 보장되는 언어 - - - - 자바의 접근 제어자처럼 코틀린에는 가시성 제어자가 존재 - - 2023. 12. 26.