카카오

    2022 카카오 Tech 인턴십 지원 후기 (Server)

    2022 카카오 Tech 인턴십 지원 후기 (Server)

    모든 과정을 진행하며 항상 가졌던 마음가짐은 '좋은 경험이라 생각하고 부담 갖지 말자'는 마인드였다. 부담 없이 가벼운 마음으로 준비했지만 절대 대충 준비하지는 않았다..! 이번 인턴십 선발 과정은 다음과 같다. 서류 이번 인턴십은 서류를 작성해서 제출하면 모두에게 코딩 테스트 기회를 주었고, 코딩테스트가 마무리된 후 코테 점수와 서류를 합산해 면접자를 뽑는 방식이었다. 서류에는 프로젝트 경험, 자기소개서를 적어서 제출했다. 자기소개서는 경험에 대한 설명을 중심으로 적었다. 읽는 분들이 내가 어떤 걸 해왔는지 빠르게 파악할 수 있도록, '어떤 경험을 했고 무엇을 느꼈는지, 사용한 기술에 대해선 왜 사용했는지'를 간결하게 적으려고 노력했다. 주 프로젝트로는 이전에 속해있었던 동아리 홈페이지를 만들었던 경험..

    [프로그래머스 level 3] 표편집 (C++)

    [프로그래머스 level 3] 표편집 (C++)

    카카오 2021 인턴 삽입, 삭제의 시간이 O(1)이거나 O(logn)이면 풀 수 있을 것 같았다. (알고보니 이동시간이 더 중요했다) log시간을 쓰려면 세그먼트 트리를 써야 할 것 같아서 너무 복잡해질게 예상되어서 그쪽으로는 시도하지 않았다. 예전에 백준에서 풀었던 'AC'문제랑 비슷하다고 생각했다. 그리고 학교 자료구조 시간에 리스트 과제 문제와 비슷했다. 처음에 리스트를 사용해 푸는 거라고 생각해서 List STL을 사용해서 시도해 보았다. STL에 있는 List는 삽입, 삭제는 O(1)이지만, 문제의 'U', 'D', 'Z' 명령어를 처리할 수가 없었다. 키 포인트 Z를 수행하기 위해서는 삭제된 행의 순서를 스택에 입력해 놓아야 한다. C는 리스트에서 값을 지우는 척만 하고 실제로 지워서는 안 ..

    [프로그래머스 level 3] 추석 트래픽 (Python)

    [프로그래머스 level 3] 추석 트래픽 (Python)

    문제에서 주어진 그림 덕분에 해결방법을 바로 떠올릴 수 있었다. 우선 문자열로 주어진 시간을 파싱해서 초단위로 모두 바꾼다. -> 문자열 파싱 때문에 Python 을 사용했다 그리고 위 그림처럼 시작 시간과 종료 시간을 튜플로 묶어서 리스트에 넣는다. (시간 구간을 원소로 하는 리스트 생성) 구간의 시작시간에 대해 오름차순 정렬한다. 구간 리스트를 순회하면서 구간을 우선순위 큐에 삽입한다. 우선순위 큐는 구간의 종료 시점에 대해 오름차순 정렬되어 있다. {구간의 시작 시간 - 1초} 값이 우선순위 큐의 top 원소의 종료 시간보다 같거나 크다면 1초 구간 내에 없다는 뜻이므로 우선순위 큐의 top 원소를 pop 한다. 따라서 우선순위 큐에 원소가 있다면 다들 1초 간격 내에 존재하는 구간인 것이다. 매 ..

    [프로그래머스 level2] 프렌즈4블록 (C++)

    카카오 코딩테스트 [1차] 문제 2차원 배열의 원소가 떨어지는걸 구현하는게 핵심인 구현 문제이다. 문제에서 구현할 부분이 확실하게 나눠져 있음을 확인했다. 2x2 블록을 모두 찾아서 지우기 지워진 블록 떨어뜨리기 2x2블록을 찾아서 삭제하는 부분이다. bool deleteBoard(){ int del = 0; for(int r = 0; r < N; r++){ for(int c = 0; c < M; c++){ if(!board_records[r][c]) continue; del += delete2x2(nboard[r][c], r, c); } } for(int r = 0; r < N; r++){ for(int c = 0; c < M; c++){ if(board_records[r][c] == 2){ board..

    [프로그래머스] level2 메뉴 리뉴얼 (C++)

    2021 카카오 블라인드 채용 문제를 읽어봤는데 요구사항을 한 번에 이해하지 못했다. 카카오 문제 특징인 것 같다. 지문이 너무 길다.. 그래서 처음 풀때는 시간내에 풀지 못하고 풀이만 어렴풋이 생각해둔채로 넘겼었다. 다시 풀기위해서 차분하게 풀이를 머릿속에 모두 정리하고 코딩에 들어갔다. 개인적으로 깔끔하게 풀린것같아서 마음에 드는 코드이다. 먼저 orders로 들어온 string을 오름차순 정렬하기 위해서 char로 모두 분해한 다음에 알파벳 순으로 정렬해서 2차원 벡터 형태로 만들어줬다. vector norders; for(auto str: orders){ vector temp; for(int i = 0; i < str.size(); i++){ temp.push_back(str[i..

    [프로그래머스] level2  뉴스 클러스터링

    [프로그래머스] level2 뉴스 클러스터링

    나는 문제를 잘못읽어서 2시간 넘게 삽질했다. 두 글자씩 끊어서 다중 집합을 만든다. 이때 집합에 특수 기호나 숫자가 들어있을 경우 그 쌍은 버린다. 이 조건을 잘못 읽었다. 어떻게 잘못 읽었냐면 주어진 문자열에서 특수 기호나 숫자를 먼저 모두 지워버리고, 특수 기호나 숫자가 없는 쌍을 만드는 걸로 착각했다. 당연히 특수 기호나 숫자를 먼저 지워버리면 제대로된 값이 나오지 않을 것이다. ex) 예제 2, 3번 풀이 입력 받은 문자열을 모두 대문자로 바꿔준다. 문자열을 2개씩 끊어서 새로운 배열에 넣어준다. 이때 2개의 문자 중 특수 기호나 숫자가 있으면 배열에 넣지 않고 넘어간다. 배열의 길이는 최대 999 * 999 = 약 100만 이다. 따라서 N^2 풀이가 가능하다고 생각했다. 2개의 배열을 가지고..