본문 바로가기

전체 글

(49)
시스템 프로그래밍 - 가비지 컬렉션 최근 취업을 위해 이곳저곳 면접을 보면서 가장 자주 이야기한 가비지 컬렉션입니다.대략적으로 어떤 기능을 하는지는 이해하고 있었지만 심층적인 이해가 부족하다고 생각이 들어오늘의 주제로 가져왔습니다. Garbage Collection , GC 는 런타임 환경에서 메모리를 자동적으로 관리해주는 방식을 이야기합니다.프로그래머가 할당했지만 사용하지 않고 해제하지 않은 메모리를 자동적으로 해제해주어 메모리 관리를 용이하게 해줍니다.이 내용을 보면 무조건적으로 좋은 것처럼 느껴지지만 가비지 컬렉션은 실행 시 성능에 영향을 줄 수 있기 때문에, GC 발생 빈도와 시점을 최소화하고 조절하는 것이 중요합니다.가비지 컬렉션은 자동 메모리 관리라는 기능 자체를 의미하며,이 개념은 다양한 언어와 엔진에서 서로 다른 방식으로 구..
자료구조 - Trie 감사하게도 좋은 기회가 생겨 코딩 테스트 문제를 더 풀어보던 중 새로운 자료구조에 대해 공부하게 되었습니다.Trie 는 트라이라 읽는 prefix tree 라고도 부르는 자료구조로 트리의 일종입니다.일반적으로 문자열의 효율적인 비교를 위해 사용됩니다.트라이는 노드 하나 하나가 개별의 문자를 가지고 그 문자들을 트리의 형태로 따라가면 하나의 완성된 단어가 되는 방식의자료구조입니다.이런 방식으로 글자를 노드별로 다음 글자로 이어지고 마지막 노드에서 단어로 완성되었는지불값을 통해 확인해 단어의 완성을 확인합니다.트라이는 트리의 이점을 그대로 가지기 때문에 해당 단어를 접두어로 가지는 단어를 찾거나 혹은 이미 존재하는지찾는 것에 효율적입니다. 트라이는 해커스랭크에서 No Prefix Set 이라는 문제를 풀면서..
수학 - KMO 올림피아드 문제 오늘은 쉬어가는 겸 풀이는 쉽지만 사고력을 필요로 하는 수학 문제를 가져왔습니다.문제는 풀이는 너무 쉬운데, 혼자선 절대 생각 못하는 문제 (youtube.com) 에서 가져왔습니다.유튜브를 통해 이러한 문제들을 자주 보면서 사고의 방식을 확장시키려고 노력하는 편입니다. 해당 문제의 조건은 간단합니다.이 식을 만족하는 가장 큰 정수 N 을 구하는 문제입니다. 이 문제를 처음보면 당황할 수 있습니다.사실 이런 문제는 단순하게 계산해서도 풀이가 가능합니다만 조금 더 영리하게 풀이를 시도해보겠습니다. 우선 문제에서 주어진 식을 A 라 가정하겠습니다.그리고 A를 기준으로 A보다 큰 값 B 와 작은 값 C를 가정해 주겠습니다. 해당 식에 따라 B > A > C 가 성립합니다.이렇게 식을 세운 뒤 모든 항에 A를 ..
알고리즘 - 네트워크 이번 내용은 조금 가볍게 간단한 알고리즘 문제로 진행하겠습니다.최근 구직을 위해 이력서와 자기소개서를 작성하면서 코딩 테스트 준비에 소홀했던 경향이 있어환기가 될만한 문제를 가져왔습니다. 프로그래머스의 문제로 네트워크 라는 이름의 문제입니다.https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와..
알고리즘 - GJK 알고리즘 GJK 알고리즘은 두 볼록 도형의 충돌을 감지할 수 있는 알고리즘입니다. 해당 알고리즘을 설명하기 위해선 우선 민코프스키 차를 우선적으로 이해해야합니다.민코프스키 차는 두 점에 대한 집합A에서 집합B를 뺀 값을 가진 집합을 의미하는데A⊖B={a−b∣a∈A, b∈B}위 수식과 같이 표현합니다.쉽게 설명하자면 두 도형 A, B가 있을때, A의 모든 점에서 B의 모든 점을 뺀 점들을 의미하게 됩니다.이러한 점들을 통해 하나의 볼록 도형이 구성되게 되는데 이 도형이 충돌처리를 하는데 중요한 역할을하게 됩니다.이 민코프스키 차를 이용해 구한 점들로 새로운 단체(Simplex)를 구성하면 이 단체가 원점을 포함할 때 두 도형은충돌했음을 알 수 있습니다.단체라는 단어가 저에게 익숙하지 않기에 이 글에선 심플렉스라고 ..
알고리즘 - 박성원 문제 최근 취업을 위해 여러가지 알고리즘 문제를 풀고 있습니다.기하학적인 요소나 수식을 활용한 문제는 수월하지만 다이나믹 프로그래밍을 요구하는 문제에서 어려움을 많이 겪어해당 하는 문제를 가져왔습니다. https://www.acmicpc.net/problem/1086박성원은 이 문제를 풀지 못했다.서로 다른 정수로 이루어진 집합이 있다. 이 집합의 순열을 합치면 큰 정수 하나를 만들 수 있다. 예를 들어, {5221,40,1,58,9}로 5221401589를 만들 수 있다. 합친수가 정수 K로 나누어 떨어지는 순열을 구하는 프로그램을 작성하시오.하지만, 박성원은 이 문제를 풀지 못했다.따라서 박성원은 그냥 랜덤하게 순열 하나를 정답이라고 출력하려고 한다. 이 문제에는 정답이 여러 개 있을 수도 있고,박성원이 ..
알고리즘 - 퀸의 공격2 오늘은 새로운 코딩 테스트 사이트를 가져왔습니다.HackerRank 라는 사이트로 링크는 다음과 같습니다.https://www.hackerrank.com/dashboard Dashboard | HackerRankJoin over 23 million developers in solving code challenges on HackerRank, one of the best ways to prepare for programming interviews.www.hackerrank.com다른 코딩 테스트 사이트처럼 유형별 문제 풀이가 가능하고 대비를 위한 일주일, 한달짜리 코스 문제들도 존재합니다. 이 사이트의 장점은 IDE 가 잘 되어있어 사이트에서 직접 코딩하며 문제 풀기가 용이하고 라이브 코딩 테스트를 준비하..
알고리즘 - 직선 위의 최대 점 개수 구하기 이번에 다룰 내용은 직선 위의 최대 점 개수 구하기 입니다. 금년 4월 말 졸업 예정이기에 그 전에 취업을 위해 열심히 지원 서류를 작성하고 있습니다.학교에서 제공하는 취업 컨설팅을 통해 추천 받은 Leetcode 라는 코딩 테스트를 위한 사이트를 추천받았습니다.우리가 흔히 아는 백준과 동일한 역할을 하는 사이트지만 테스트 케이스를 수정하기에 용이하고 좀 더 편하다는인상을 받았습니다.취업 전까지 해당 사이트를 통해 반복 학습을 진행할 예정입니다. 해당 사이트에서 한 문제를 가져왔습니다.Given an array of points where points[i] = [xi, yi] represents a point on the X-Y plane, return the maximum number of points..