한 번에 끝내는 코딩테스트 369 Java편 초격차 패키지 Online 51

코딩테스트 - 패스트캠퍼스 챌린지 11일차

수강한 강의 Chapter 13 재귀 용법 - 알고리즘 해결에 중요한 재귀 호출 이해 Chapter 14 동적 계획법과 분할 정복 - 동적 계획법과 분할 정복 학습 후기 재귀 용법 recursive call 재귀 호출로도 불리며 함수 안에서 동일안 함수를 호출하는 형태를 말한다. 저번 08일 차 강의 공간 복잡도에서 factorial을 구하는 함수를 작성할 때 for문으로 작성한 forFactorial 함수와 recursiveFactorial 함수를 볼 수 있다. 재귀 호출은 스택의 전형적인 예이다. 아래 그림은 재귀 호출을 실행하고 intellij에서 debug모드로 함수 콜을 확인한 모습이다. HeapLecture[1]에서 n = 4, HeapLecture[2]에서 n = 3, HeapLecture[..

코딩테스트 - 패스트캠퍼스 챌린지 10일차

수강한 강의 Chapter 12 기본 정렬 알고리즘 - 선택 정렬 - 삽입 정렬 학습 후기 선택 정렬 여러 데이터들을 순회하면서 가장 작은 수를 선택하여 앞쪽으로 보내면서 정렬하는 알고리즘이다. 선택 정렬 이미지 출처: https://ko.wikipedia.org/wiki/%EC%84%A0%ED%83%9D_%EC%A0%95%EB%A0%AC 선택 정렬 - 위키백과, 우리 모두의 백과사전 선택 정렬(選擇整列, selection sort)은 제자리 정렬 알고리즘의 하나로, 다음과 같은 순서로 이루어진다. 주어진 리스트 중에 최소값을 찾는다. 그 값을 맨 앞에 위치한 값과 교체한다(패스(pass)). 맨 ko.wikipedia.org 아래의 순서에 따라 선택 정렬 알고리즘이 진행된다. 1. 리스트 데이터 중 최..

코딩테스트 - 패스트캠퍼스 챌린지 09일차

수강한 강의 Chapter 12 기본 정렬 알고리즘 - 버블 정렬 학습 후기 강의에서 자료구조 강의를 지나 알고리즘 강의를 시작하고부터 직접 구현해보고 이해하는데 시간이 오래 걸려 진도가 조금씩 더딘 거 같다. 그래도 이번에는 진짜! 꼭! 제대로 코딩 테스트를 통과하고 싶기 때문에 제대로 이해하고 구현하고 넘어가려고 한다. 알고리즘 연습 방법 이번 강의 시작 부분에는 알고리즘 연습 방법을 알려주셨는데 평소 알고리즘 공부할 때는 그냥 프로그래머스나 백준과 같은 알고리즘 사이트에서 무작정 문제만 푸는 식으로 공부를 했다. 하지만 강의에서는 바로 문제를 풀지 말고 문제를 읽고 간단한 경우를 문장으로 적고 코드화 하기 위한 방법을 생각하고 코드로 구현하고 전체 코드로 어떻게 구현될지 적은 다음에 코드로 옮기라고..

코딩테스트 - 패스트캠퍼스 챌린지 08일차

수강한 강의 Chapter 12 기본 정렬 알고리즘 - 참고: 공간복잡도 학습 후기 저번 강의까지 자료구조에 대한 강의를 끝내고, 이번 강의부터 알고리즘 관련 강의가 시작되었다. 저번 강의 중에 복잡도 관련하여 시간 복잡도와 공간 복잡도가 있다고 했고 저번 강의에서 시간 복잡도에 대해 자세히 이야기 해주었다면 이번 강의에서는 공간 복잡도에 대한 설명을 더해주는 강의였다. 좋은 알고리즘이란 실행 시간도 짧고, 공간도 적게 차지하는게 좋은 알고리즘인데 요즘에는 대용량 시스템이나 하드웨어의 발전으로 공간복잡도의 영향이 덜 해 공간복잡도 보다는 시간복잡도에 조금 더 가중치를 두는 편이다. 하지만 코딩테스트에서는 공간복잡도에 대한 제약 사항이 있는 경우가 있기 때문에 공간 복잡도까지 신경써서 구현해야 한다. 공간..

코딩테스트 - 패스트캠퍼스 챌린지 07일차

수강한 강의 Chapter 11 자료구조 (힙) - 힙 구조 - 힙 구조 java 구현 학습 후기 꾸준히 한지 이제 1주일이 지났다 50일 환급 챌린지를 작성하면서 주말과 연휴 상관없이 50일 동안 계속 강의를 듣고 블로그에 글을 올린다는 생각에 너무한다(?)라는 생각하도 하지만 그래도 반 강제적으로 이렇게 하니 꾸준하게 강의를 듣고 있어 작심삼일(?)형의 마인드인 나에게 조금 좋은거 같기도 하다. 힙을 java의 ArrayList를 사용하여 구현해 보았다. 힙은 최대값 최솟값을 빠르게 찾기 위한 완전 이진 트리이다. Max Heap은 최상단 노드에 최댓값이 들어있고 Min Heap에서는 최상단 노드에 최솟값이 들어있다. 완전 이진 트리란 노드를 삽입할 때 최하단 왼쪽 노드부터 차례대로 삽입하는 트리로 ..

코딩테스트 - 패스트캠퍼스 챌린지 06일차

수강한 강의 Chapter 10 자료구조 (트리) - 이진 탐색 트리 구현과 성능 평가 학습 후기 자료구조 트리에 대해서 배웠다. 트리는 Node와 Branch를 사용하여 사이클을 이루지 않도록 구성한 데이터 구조로 탐색(검색) 알고리즘 구현을 위해 많이 사용된다. - 주요 용어 Node: 데이터 저장 요소, 다른 노드와의 연결 정보인 Branch 정보 포함 Level: 최상위 노드를 Level 0으로 하여 하위 Branch로 연결된 노드의 깊이를 나타냄 Parent Node: 어떤 노드의 상위 연결 노드 Child Node: 어떤 노드의 다음 레벨 노드 Leaf Node (Terminal Node): Child Node가 하나도 없는 노드 Sibling (Brother Node): 부모가 같은 노드 D..

코딩테스트 - 패스트캠퍼스 챌린지 05일차

수강한 강의 Chapter 09 자료구조 (해쉬) - 블록체인에도 쓰이는 해쉬 테이블 학습 후기 평소에 자주 쓰던 HashMap 클래스에 대해 자세히 알아보고 구현 및 어떻게 동작하는지 자세히 알게 되었다. 이전까지의 강의는 쉽게 구현할 수 있어서 계속 더 듣고 싶었지만 이번 강의부터는 뭔가 조금 어렵게 느껴졌다. HashTable 구현하기가 쉽지 않았다. HashTable을 직접 구현해보면서 Java에서 Map map = new HashMap(); map.put("a", "a"); System.out.println(map.get("a")); 으로만 작성해 쓰던걸 해쉬 함수도 여러 개 있고 거기에 데이터를 저장할 때 충돌이 나는 충돌 해결 알고리즘을 직접 구현해보면서 어떤 방법이 좋을지 많이 고민해 보았..

코딩테스트 - 패스트캠퍼스 챌린지 04일차

수강한 강의 Chapter 06 자료구조 (스택) - 꼭 알아둬야 할 자료 구조: 스택 (Stack) Chapter 07 자료구조 (링크드 리스트) - 은근히 어려운 자료 구조: 링크드 리스트 - 다양한 링크드 리스트 Chapter 08 알고리즘 복잡도 표현 기법 - 알고리즘 복잡도 표현 기법 익히기 학습 후기 1. Stack 스택 누군가 예전에 스택을 설명하길 급식실에서 다 먹은 식판을 쌓아 두는 것과 같다고 하였다. 먼저 먹고 나간 사람의 식판이 제일 밑에 있고 설거지를 위해서는 마지막에 쌓인 식판(제일 위)부터 식판을 꺼내기 때문이라나.. 무튼 그렇다고 한다. Last In, First Out or First In, Last Out 대표적인 스택 활용으로 컴퓨터 내부 프로세스 구조의 함수 동작 방식..

코딩테스트 - 패스트캠퍼스 챌린지 03일차

수강한 강의 Chapter 04 자료구조 (배열) - 꼭 알아둬야 할 자료 구조: 배열 (Array) Chapter 05 자료구조 (큐) - 꼭 알아둬야 할 자료 구조: 큐 (Queue) 학습 후기 1. 배열 같은 종류의 데이터를 순차적으로 저장하는 자료구조 장점: 빠르게 인덱스 번호로 접근 단점: 길이가 미리 정해져 있다 - List 말고 String[] 과 같은 배열 - Primitive 자료형과 Wrapper 클래스 Wrapper 클래스를 사용한다. 이유는 null 처리 용이, ArrayList등 객체만을 핸들링 하는 기능을 사용하기 위해 ArrayList 클래스는 가변 길이의 배열 자료구조를 다룰 수 있다. - List와 ArrayList 차이점 List 인터페이스, ArrayList는 클래스 L..

코딩테스트 - 패스트캠퍼스 챌린지 02일차

수강한 강의 Chapter 03 강의 환경 준비 - 주피터 노트북 설치 (맥/윈도우 환경) - JDK 와 IntelliJ 설치 - java 주피터 노트북 설치 - java 주피터 노트북 사용법 학습 후기 오늘은 저번 포스트에서 언급한 것과 같이 Github에 새로운 저장소를 만들었고 지난번에 작성했던 CodingTest.java 파일을 올려 놓았다. 이 파일은 간단한 Python 코드의 사칙연산을 Java코드로 바꾼 것이다. 해당 github링크는 https://github.com/insu-choi/codingtest 이다. GitHub - insu-choi/codingtest: fastcampus codingtest lecture practice fastcampus codingtest lecture p..

반응형