일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 2228
- 정상회담2
- 2629
- DP
- 기술면접
- 최장증가수열
- 1670
- 2482
- 가장긴증가하는 부분수열
- LIS
- 개발자 면접
- 백준11053
- 카카오
- 구간나누기
- 백준
- 파이썬
- 알고리즘
- 카카오 서류전형
- 백준12015
- Python
- 카카오 인턴십
- Longest Increasing Subsequence
- 카카오 면접
- 여름인턴십
- 카카오 인턴
- 카카오 자기소개서
- 단어수학
- 인턴십 면접
- LIS 알고리즘
- 백준12738
- Today
- Total
목록전체 글 (45)
프로그래밍에 대한 고찰 및 생각
결과 원래 예정된 발표는 수요일이였다. 지난 서류발표때 예정된 날짜보다 하루 일찍 발표가 나서 혹시 이번에도 하루 일찍 발표가 나오나 했지만 아니였다. 코딩테스트와 서류 결과가 모두 오후 5-6시쯤 나와서 이번에도 그쯤 나올것이라고 생각했는데 생각보다 일찍 오후 1시쯤 나왔다. 면접 중간중간 쉬운 질문에도 못한 대답도 있었고, 자신 있다고 말했던 분야에서 대답하지 못한 질문도 있었다. 지원했던 서버와 크게 관련있는 프로젝트도 거의 없었다. 하지만 모르는 내용은 모른다고 솔직하게 말씀드리고, 아는 내용은 최대한 자세하게 설명하려고 노력했다. 가식없이 있는 그대로, 아는 그대로를 보여준것 같다. 수업시간에 열심히 공부해왔던 CS들, 다양한 프로젝트 경험들, 솔직함 이 세가지가 강점이 아니였나 싶다. 첫 인턴..
인터뷰 준비 직무와 관련된 면접이 처음이였기에 다른 면접 후기들을 보면서 면접 준비를 했다. 크게보면 코딩테스트 리뷰 자기소개서 기반 프로젝트 정리 CS 지식 이였다. 코딩테스트 리뷰 당시 총 5문제중 3문제를 해결하였고, 한문제는 풀다가 포기했었다. 풀었던 문제중 2문제는 간단한 문제여서 작성했던 코드를 다시 보는 정도로 마무리했다. 세번째 문제에서는 시간을 많이 소요했고 조금 복잡해서 작성했던 로직을 다시 살펴보고 오래 걸린 이유에 대해 정리했다. 풀다가 포기했던 문제는 물어보지는 않을 것 같아서 따로 정리하지 않았다. 자기소개서 기반 프로젝트 정리 자소서에 이런저런 프로젝트들을 써놨는데 막상 그 프로젝트들이 진행한지 오래되어서 생각이 잘 나지않아 기억을 더듬어가며 정리했다. 사용했던 프레임워크에 대..
서류 전형 코딩 테스트에 합격을 한 후, 서류전형을 위해 자기소개서를 작성하였다. 고등학교 때 종합전형을 위해서 자소서를 작성해보고 대학교에서 수업시간에 간간히 작성해본게 전부라 실전에서 취업을 위한 자기소개서 작성은 처음이였다. 굳이 따지자면 공채가 아닌 인턴십이긴하지만.. 대학교 입학 할 때부터 지금까지 해왔던 것들 중에 어떤 내용을 쓸지 고민했고, 나름 얻은것이 많았다고 생각하는 프로젝트와 경험들을 적었다. 최대한 간결하면서 핵심은 드러나되, 과장되지 않도록 작성하려고 노력했다. 자소서를 작성하면서 느낀점 자소서를 작성하면서 지금껏 해왔던 프로젝트들을 보니 아쉬움이 많았다. 해당 프로젝트마다 github에서 제대로 관리가 되어있지 않은 프로젝트들도 있었고, 최종 결과물을 정리해놓지 않아서 produ..
생애 첫 코딩테스트 대학교 1학년때 교내 프로그래밍대회에서 운좋게 수상하여 네이버 D2에서 주최하는 프로그래밍대회 본선에 나간적이 있었는데 그당시에는 알고리즘이 무엇인지도 몰랐고 코딩을 시작한지 반년도 채 되지않은 나에겐 너무나도 어려웠다. 당연히 등수는 아래부터 찾는것이 빨랐다. 그동안 알고리즘 공부를 많이 해오면서 실제로 기업의 코딩테스트를 본적은 없었는데 이번 카카오가 그 첫번째 코딩테스트였다. 사실 이번 카카오 여름 인턴십은 코딩테스트를 경험해보고 싶어서 지원한 것도 있었다. 시험날짜는 2021년 5월 8일 오후2시. 4시간동안 진행되었고 총 5문제가 출제되었다. 문제 보러가기 1번 문제 영어 알파벳으로 숫자를 받아서 해당 문자를 매칭되는 숫자로 변환해주는 문제였다. 예를 들어 onetwothre..
투 포인터 알고리즘(Two Pointer Algorithm) 투 포인터 알고리즘은 선형자료구조에서 특정부분집합을 빠르게 찾아낼때 사용된다. 예를 들어 다음 문제를 보자. 백준 1806번 - 부분합 위 문제같은 경우 N = 100000 일때 모든 부분합의 개수는 N^2 으로 많은 시간이 소요된다. 그렇다고 메모이제이션을 하기에는 부분합인 S의 범위가 1억이하이므로 메모리상으로도 초과가 발생한다. 이때 사용할 수 있는 알고리즘이 투 포인터 알고리즘 이다. 다음과 같은 배열에서 합이 10이상이되는 가장 짧은 길이를 구해보자. 먼저 우리가 찾을 부분배열의 시작 인덱스를 start, 마지막 인덱스를 end라고 하자. 처음에는 두값모두 0이다. 이후 현재 부분배열의 합이 S(10) 이상이 아니라면 end++ 하여 ..
유명한 Greedy 알고리즘 - 회의실 배정 문제 회의실 배정 문제는 그리디 알고리즘에서 빠지지 않고 등장하는 문제이다. 이문제는 각 회의마다 시작시간과 종료시간이 정해져있고 하나의 회의실에 대해 가장 많은 회의를 진행하게 하고 싶을때 그 개수를 구하는 문제이다. 이 문제에서의 최종 목표는 최대한 많은 회의를 진행시키는 것 이다. 여기서 조건은 회의마다 시작시간과 끝나는시간이 정해져있다는 것과, 두 회의간 겹쳐서는 안된다는 점이다. Think1. 가장 짧은 회의들 먼저 진행시키면 되지않을까? 굉장히 Greedy한 접근법이다. 최대한 많은 회의를 진행시키려면 결국 회의시간이 짧은 회의들을 골라서 넣는것이 최적의 해를 만들어 줄것같다. 과연 그럴까? 위와같이 a~g까지 7개의 회의들이 있다고 가정해보자. 여..
탐욕 알고리즘(Greedy Algorithm) 탐욕 알고리즘(이하 그리디)은 어떤 문제를 해결할때 모든 경우의 수를 전부 고려하지 않고 항상 최적이 되는 것만 골라서 진행해나가는 알고리즘을 의미한다. 모든 경우의 수를 전부 고려해서 최적의 해를 계산해내는 dynamic programming과는 다르다. 그렇다면 두가지 의문이 들수있다. 1. 항상 최적의 해만 골라서 탐색하면 지금까지 왜 dynamic programming으로 모든 경우의 수를 분석했나? 왜냐하면 그리디 알고리즘으로 모든 문제를 해결할 수 있는것이 아니기때문이다. 현재 상황에서는 가장 최적의 해라고 생각했지만 이후에 상황에 따라 그때의 선택이 최선의 결과를 만들지 않을수도 있기때문이다. 2. 그렇다면 그리디 알고리즘은 최선일수도 있고 아닐..
이 문제에서 핵심이 되는 부분은 얼리 아답터가 아닌 사람들은 자신의 모든 친구들이 얼리 아답터일 때만 이 아이디어를 받아들인다. 이 부분이다. 이 말을 다르게 해석하면 결국 만약 자신이 일반인이라면 자신의 모든 친구들이 얼리어답터여야 함을 의미한다. 또한 만약 자신이 얼리어답터라면 자신의 친구가 일반인이던, 얼리어답터이던 중요하지 않다. 모두 가능하다. 정리하자면 얼리어답터 -> 얼리어답터 or 일반인 일반인 -> 얼리어답터 따라서 이것을 이용해 한정점에서 시작해 DFS로 순회하면서 위의 조건을 통해 최소의 얼리어답터 수를 구할 수 있을것이다. 만약 위와같은 트리로 전체적인 흐름을 파악해보자. 1번 정점부터 DFS를 수행한다고 할때 1번 정점에서 가능한 경우는 다음과 같이 두가지이다. 최종답은 두 경우중..