분류 전체보기
-
ArrayList 자료 구조 분석자료구조, 알고리즘 2021. 8. 5. 21:47
개요 C에 Vector가 있다면 Java에 ArrayList가 있습니다. 물론 Java에도 멀티 스레딩 환경에서 최적화된 ArrayList인 Vector가 있긴하지만, 오늘은 기본적으로 ArrayList에 대해서만 정리하도록 하겠습니다. 일반적인 Array는 그 크기가 정적(Static)입니다. Array를 생성하면서 크기를 설정하면 할당된 해당 Array는 크기 변경이 불가능합니다. 메모리에 Random-Access하기 위해서는 메모리 위에 한번에 그 영역을 설정해야하므로 이렇게 만들어졌다고 생각됩니다. 실제로 프로그래밍을 하다보면, Array를 사용하다가 그 크기를 변경해야할 때가 있습니다. 혹은 Array의 특성 때문에 초기에 너무 큰 공간을 할당해서 공간을 낭비하는 경우도 있습니다. 이런 경우 적..
-
An Overview Of Computer Science Concepts For Engineers일상, 생활 기록 2021. 7. 26. 13:25
https://blog.robertelder.org/computer-science-for-engineers/ An Overview Of Computer Science Concepts For Engineers 2017-03-05 - By Robert Elder Who Should Read This? This article is targeted at engineering majors from disciplines other than software engineering (such as electrical or mechanical) who are interested in learning more about what topics exist in t blog.robertelder.org
-
5 Things Better than a Computer Science Degree일상, 생활 기록 2021. 7. 24. 21:07
https://betterprogramming.pub/5-things-better-than-computer-science-degree-f8acb8061c09 5 Things Better than a Computer Science Degree A tertiary education is important but some things look even better on a resume betterprogramming.pub
-
백준 2143번 두 배열의 합 (Java)Problem Solving 2021. 7. 21. 23:29
해결 과정 두 배열이 주어지면 각 배열마다 부 배열의 합이 있을 것이고, 특정 부 배열의 합들을 더해서 T를 만족하는 경우의 수를 구하는 문제다. 문제에서 주어졌듯이 부 배열은 각 배열에서 매우 많다. (단, 입력의 조건에 의해 최대 배열의 길이는 1000이므로 배열 당 최대 1000000개까지 나올 것이다) 부 배열은 연속된 배열이라는 특징이 있다. 가장 먼저 눈에 띄는 것은 T의 범위인데 범위가 매우 커서 int로 담을 수 없다는 것을 바로 알 수 있다. 따라서 문제 해결 과정에서 필요한 곳에 long 타입을 사용해야한다. 또한 단순히 모든 부 배열의 쌍을 구한다면 1000000 * 1000000 번의 연산이 필요하기 때문에 시간초과가 발생할 것이다. 따라서 다른 방법으로 접근해야한다. 이 문제는 경..
-
백준 1931번 회의실 배정 (Java)Problem Solving 2021. 7. 18. 21:33
해결 과정 회의실 배정을 적절히 해서 가장 많은 스케줄을 할당하게 하는 문제다. 처음에는 솔루션이 떠오르지 않아, 모든 케이스에 대해서 다음에 올 가장 적절한 스케줄을 찾아나가는 식의 Brute Force를 생각해봤으나, 회의의 수가 최대 100000개이기 때문에 모든 케이스에 대해서 접근하면 O(n^2), 즉, 100000^2의 연산이 필요하다. 따라서, 시간초과가 발생할 여지가 충분했다. 따라서 적어도 O(n*lgN)이나 O(n)의 시간복잡도를 가지는 알고리즘이 필요했는데, 시작 시간이나 종료 시간을 기준으로 해당 타임에 가장 적합한 스케줄을 앞에서부터 찾아나가면 되겠다고 접근했다. 문제를 자세히 보면, 종료 시간이 가장 짧은 스케줄들을 차례대로 이어나가다보면 회의의 최대 개수를 구할 수 있음을 알 ..
-
Deadlock과 Starvation의 차이운영체제 2021. 7. 7. 17:04
Deadlock이란? Deadlock(이하 데드락)이란 여러 프로세스나 스레드가 절대 일어나지 않는 이벤트나 자원 할당을 위해 무한정 대기하는 것을 말한다. 프로세스의 상태는 running, ready, blocked 상태가 있는데 특히 blocked 상태는 프로세스가 어떤 특정 이벤트나 필요한 자원을 기다리는 상태다. 데드락이 발생하면 프로세스는 blocked 상태에서 무한히 대기한다. https://ko.wikipedia.org/wiki/%EA%B5%90%EC%B0%A9_%EC%83%81%ED%83%9C 교착 상태 - 위키백과, 우리 모두의 백과사전 데드락은 여기로 연결됩니다. 다른 뜻에 대해서는 데드락 (동음이의) 문서를 참조하십시오. 교착 상태(膠着狀態, 영어: deadlock)란 두 개 이상의 ..
-
백준 1707번 이분 그래프 (Java)Problem Solving 2021. 6. 29. 17:34
해결 과정 주어진 그래프가 이분 그래프인지를 판별하는 문제다. 문제의 설명에서 이분 그래프에 대한 간단한 설명이 주어지는데, 사실 이것만 읽고 이분 그래프를 이해하기가 힘들었다. 그래서 가장 먼저 이분 그래프에 대해 조사를 했다. 먼저 위키 백과에서 조사를 했는데, 대충 꼭짓점을 색칠한다는 걸로 나와있으나, 이분 그래프에 대한 개념이 없던 나로서는 이해하기 매우 힘든 설명이었다. 그래서 다른 블로그를 조사했고, 이분 그래프에 대해 명확한 설명이 나와있는 블로그 게시글을 봤다. https://gmlwjd9405.github.io/2018/08/23/algorithm-bipartite-graph.html [알고리즘] 이분 그래프(Bipartite Graph)란 - Heee's Development Blog ..