/epi_judge_java

Element of Programming Interview in Java 스터디

Primary LanguageJava

epi_judge_java

Element of Programming Interview in Java 스터디

저자 레파지토리 https://github.com/adnanaziz/EPIJudge

학습 목표

  • 각 주제별로 요구하는 개념을 명확하게 설명할 수 있는지 자가진단.

  • 부족하면 보충 학습 후 정리

  • 각 문제들을 다음과 같이 풀이 *교재 서문, EPI 스타일을 지키는 풀이법

    a. 가장 간단하게 푸는 방법은 무엇일까?

    b. 비효율적인 부분이 있을까? 분석 후 개선점 찾기

    c. 더 효율적인 알고리즘 개발, 설명

    d. 실제 입력 데이터를 알고리즘에 대입

    e. 알고리즘에서 중요한 부분을 코드로 설명가능한가?

    f. 시간 및 공간복잡도를 분석

    g. 변형된 문제를 풀이, 내용을 얼마나 잘 이해했는지 확인

  • 한번에 다 하려 하기 보다는 점진적으로 나아가자.

주차별 학습

Week1 (6월 22일 ~ 7월 2일)

- Primitive Types 주요 개념 / 문제 풀이 (4.1 ~ 4.7)
- Arrays 주요 개념 복습

Week2 ( 7월 3일 ~ 7월 9일) 예정

- Arrays 문제 풀이 (5.1 ~ 5.2)
- Strings 주요 개념 / 문제 풀이(6.1 ~ 6.3)
- LinkedList 주요 개념 / 문제 풀이(7.1 ~ 7.4)
- Primitive Type 문제 풀이 (4.8 ~ 4.9) 

학습 목차

자료구조와 알고리즘 관련

4. Primitive Types (Week1)

4.1 Computing the parity of a word 
4.2 Swap Bits
4.3 Reverse bits
4.4 Find a closest integer with the same weight
4.5 Compute $x \times y$  without arithmetical operators
4.6 Compute $x /y$ 
4.7 Compute $x^y$
4.8 Reverse Digits
4.9 Check if a decimal integer is a palindrome
4.10 Generatoe uniform random numbers
4.11 Rectangle intersection

5. Arrays (Week2)

5.1 The Dutch national flag problem
5.2 Increment an arbitary-precision integer
5.3 Multiply two arbitrary-precision integers
5.4 Advance through an array
5.5 Delete duplicates from a sorted array
5.6 Buy and sell a stock once
5.7 Buy and sell a stock twice
5.8 Enumerate all primes to n
5.9 Permute the elements of an array
5.10 Compute the next permutation
5.11 Sample offline data
5.12 Sample online data
5.13 Compute a random permutation
5.14 Compute a random subset
5.15 Generate nonuniform random numbers
5.16 The Sudoku checker problem
5.17 Compute the spiral ordering of a 2D array
5.18 Rotate a 2D array

6. Strings

6.1 Interconvert strings and integers
6.2 Base conversion
6.3 Compute the spreadsheet column encoding
6.4 Replace and remove
6.5 Test palindromicity
6.6 Reverse all the words in a sentence
6.7 Compute all mnemonics for a phone number
6.8 The look-and-say problem
6.9 Convert from Roman to Decimal
6.10 Compute all valid IP addresses
6.11 Write a string sinusoidally
6.12 Implement run length encoding
6.13 Find the first occurence of a substring

7. Linked Lists

7.1 Merge two sorted lists
7.2 Reverse a single sublist
7.3 Test for cyclicity
7.4 Test for overlapping lists - lists are cycle free
7.5 Test for overlapping lists - lists may have cycles
7.6 Delete a node from a singly linked list
7.7 Remove the kth last element from a list
7.8 Remove duplicates from a sorted list
7.9 Implement cycle right shift for singly linked lists
7.10 Implement even-odd merge
7.11 Test whether a singly linked list is palindromic
7.12 Implement list pivoting
7.13 Add list-based integers

8. Stack and Queus

9. Binary Trees

10. Heaps

11. Searching

12. Hash Tables

13. Sorting

14. Binary Search Tree

15. Recursion

16. Dynamic Programming

17. Greedy Algorithms and Invariants

18. Graph

19. Parallel Computing