전체 글

전체 글

    2022.08 <완전히 새로운 개발 패러다임>

    1. 입사 1개월 차 입사하기 전에 어떤 목표를 가지고 있었는지, 취업 후 생활 루틴을 어떻게 계획했는지 등등 개발 외적인 것들이 몽땅 다 잊혀질 만큼 적응 과정에 몰입하게 되었던 1개월이었다. 새로 입사하게 된 회사에서는 여지껏 들어본 적도 없던 새로운 개발 패러다임을 경험해보게 되었다. 완전히 새로운 기술을 배워보게 되면서 그만큼 시간과 정신을 많이 소모하고 있다. 할당 받은 이슈 하나를 처리하는 데에 지나치게 많은 시간을 할애하고 있는 것도 사실이다. 그렇기 때문에 업무 외적으로는 크게 신경을 쓰게 되질 못하게 된 것 같다. 그렇지만 오히려 나는 스스로가 이슈를 다루는 데에 거부감을 갖지 말고, 더 적극적으로 이슈를 할당받아서 해결하는 과정을 겪다보면 차츰차츰 나아지리라 생각한다. 요컨데, 지금은 ..

    2022.07 <2번째 직장>

    1. 신입인데 벌써 2번째 취업 이전 회사에서 인턴 기간이 끝난 이후 3월 17일부터 7월 11일까지 총 52군데의 회사에 지원했고, 5월 18일까지 3군데의 회사에서 코딩 테스트를 봤으며, 6월 7일까지 2군데의 회사에 과제를 제출했으며, 7월 5일까지 9군데의 회사에서 면접을 봤으며, 7월 12일까지 2군데의 회사에서 오퍼를 받았다. 그리고 2군데의 회사 중에서 고심한 끝에 취업할 곳을 골랐고, 이에 따라 7월 25일부터 첫 출근을 시작했다! 좋은 기회를 얻어서 재취업에 성공하기는 했지만, 다시 백수로 돌아가지 않기 위해서 최선을 다해야 할 것이다. 특히나, 새로운 개발 방법과 언어를 활용해보게 되었으므로 이 부분들을 중점적으로 학습하며 익숙해져야 한다. 빨리 1인분을 수행할 수 있도록 정신 바짝 차..

    블라드스톤 페헤이라 필루 - 『한 권으로 그리는 컴퓨터과학 로드맵』

    읽은 기간 : 2022.07.10 ~ 2022.07.16 익숙한 내용들 지극히 개인적인 관점에서 봤을 때 이 책도 저번에 들었던 『비전공자를 위한 이해할 수 있는 IT 지식』과 마찬가지로, 너무 아는 내용들이 많았다. 최근에 안 그래도 Algorithm & Data Structure를 많이 공부하고 있는데 이 책에서 또다시 List, Linked-List, Stack, Queue, Priority Queue, Map, Tree, Graph 등의 익숙한 자료구조들이나, Greedy, DP, N-Queen 등의 Algorithm 문제들을 다시 보자니 아무래도 겹치는 부분이 많았다. 그래도 CPU나 RAM 등의 컴퓨터 기본 구조와 운영체제에 대해 깊게 다뤄주는 부분이 있어서, 비록 한 Chapter에 불과한 ..

    Two Pointers

    개념 문제를 풀기 위해 봐야 할 넓은 영역 중에서 볼 필요가 없는 부분들은 가능하면 안 볼 수 있게 하는 알고리듬 화살표 2개에 의미를 부여해서 탐색 범위를 압축하는 방법! 대표적인 카테고리 1차원 배열 위에 2개의 포인터를 만드는 경우 관찰을 통해 문제에 등장하는 변수 2개의 값을 포인터로 표현하려는 경우 포인터를 조작하는 방향에 대해서 2개의 포인터를 같은 방향으로 이동 2개의 포인터가 양끝에서 서로를 향해 이동 Two Pointers 문제들이 가지는 키워드 1차원 배열에서의 "연속 부분 수열" or "순서를 지키며 차례대로" 곱의 최소 문제 풀이 BOJ 1806 - 부분합 난이도 : 3 10

    Binary Search

    개념 정렬이 보장되어 있는 배열에서 특정 기준을 가지고 배열을 이분하면서 탐색하는 방법 시간복잡도 : O(log N) 활용 방안 항상 전형적인 변수 세팅을 가지고 시작 L : 탐색할 가치가 있는 왼쪽 끝 index R : 탐색할 가치가 있는 오른쪽 끝 index result : 탐색한 x의 위치 로직 L과 R 사이의 가운데 지점의 값을 확인하면서 L과 R을 계속해서 옮겨주고, 최종적으로 x와 일치하는 값, 혹은 x와 가장 가까운 값을 찾아냄 L > R 이 되어버리면 탐색할 가치가 있는 구간이 더이상 없다는 뜻 효율성 구간의 길이는 N → ½ N → ¼ N → ... → 1 의 방식으로 점점 좁아짐 총 비교 횟수는 구간의 변화 횟수인 O(log N) 예를 들어 N이 10만이라면 약 16번만 비교해도 되는 ..

    Sort Application

    활용 방안 자바의 경우 Comparable을 활용해서 구현 가능 static class Element implements Comparable { public int idx, num; @Override public int compareTo(Element other) { return num - other.num; } // 음수 값이 나오면 내가 먼저, 양수 값이 나오면 other가 먼저 // 위 비교식은 오름차순 정렬 } 시간복잡도 : 약 O(N log N) 각종 복잡한 Sorting Algorithm들은 차치해두고 자바의 Arrays.sort(arr) 메소드를 기준으로 봤을 때 sort 메소드는 Primitive 원소의 경우 Dual-Pivot Quick Sort를, Object 원소의 경우 Tim Sor..

    Brute Force

    개념 정답을 무조건 구하는 치트키 문제를 해결하기 위해 가능한 경우의 수를 모두 탐색 특히 backtracking, 재귀 함수를 활용해야 하는 문제 모든 코딩 테스트에서, 부분 점수라도 얻기 위해서 기본적으로 접근할 수 있어야 함 일반적으로 시간복잡도가 높은 편 종류 (문제 유형) N개 중에서 중복을 허용하면서 중복을 허용하지 않고 M개를 순서에 따라 나열하라 골라라 N개 중에서 중복을 허용하면서 M개를 순서에 따라 나열하라 BOJ 15651 - N과 M (3) static StringBuilder sb = new StringBuilder(); static int N, M; static int[] selected; static void recursive(int k) { if (k == M + 1) { f..

    Kotlin in Action Part 1. 코틀린 소개

    Chapter 01 - 코틀린이란 무엇이며, 왜 필요한가 대상 플랫폼 = 자바가 실행되는 모든 곳 자바가 사용되는 모든 용도에 적합하면서 더 간결하고 생산적이며 대체 가능한 언어를 만드는 것이 주목적 일반적으로는 Backend 서버 상의 코드와, 안드로이드 디바이스에서 실행되는 모바일 애플리케이션에서 사용됨 정적 타입 지정 언어 자바와 마찬가지로 코틀린도 정적 타입(statically typed) 지정 언어 정적 타입 지정 : 모든 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고, 프로그램 안에서 객체의 필드나 메소드를 사용할 때마다 컴파일러가 타입을 검증해주는 것 코틀린의 타입 추론(type inference) : 대부분의 경우 프로그래머가 변수 타입을 명시하지 않아도 컴파일러가 유추 정적 타입..

    2022.06 <코딩 테스트가 무서워>

    1. AWS 프리티어 기간 종료 메일을 받고 돌이켜 생각해보니, 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 라는 책을 읽으며 AWS를 처음 사용했던 그날로부터 벌써 1년이 되어 간다는 사실을 깨닫게 되었다. 어떻게 사용해왔는지를 돌아보자면, EC2를 종료했는데 탄력적 IP를 삭제하지 않아서 요금을 부과했다거나, Route 53과 Load Balancer 등을 활용해서 HTTPS를 적용하는 데에 거의 일주일을 소모했다거나 하는 등의 우여곡절이 있었지만, 이제는 그래도 EC2와 RDS를 기본적으로 운용할 만한 수준이 되었으며, 요금이 어디서 부과되고 있는지 확실히 확인할 수 있게 되었고, Amazon DynamoDB 같은 처음 사용해보는 서비스도 레퍼런스를 보고 SDK 등을 활용할 수 있을 정도가 되었..