코드스테이츠

    코드스테이츠 부트캠프 수료 후 취업까지 회고

    경험에 의한 주관적인 내용입니다. 수료 하고 약 5개월 이후 취업을 했습니다. 5개월 동안의 일을 나눠서 생각해보면, 충전의 시간과 개인적인 일로 1개월, 프로젝트 리팩터링과 추가적인 공부의 시간으로 3개월, 이력서 작성 및 구직활동 1개월을 보냈습니다. 비전공자이고 실력이 뛰어난 개발자는 아니지만 저만의 프레임을 만들어 그 프레임에 맞추려고 했었기에 그 과정에서의 느낀 점을 적어보려 합니다. 그리고 저만의 회고록이지만, 다른 사람에게 도움이 되는 글이 되었으면 합니다. 부트캠프 옳은 선택이었는가? 1년 전에는 옳은 선택이었다고 생각하지만 지금 시점에서 선택을 한다면 70%는 정도 옳은 선택이라고 생각합니다. 1년 전에는 코딩 열풍이 강했었기에 교육을 받기 위한 경쟁 또한 치열해서, 돈을 내서 빠르게 공..

    코드스테이츠 프로젝트 회고(프로젝트 2주, 4주)

    2주 프로젝트 weavel.site 4주 프로젝트 yeollin-jib.shop 길지만 짧은 프로젝트가 모두 끝났습니다. 저에게는 지루 했던 섹션 1~3 보다 더욱 재미있었습니다. 프로젝트는 실전이라는 느낌이 더 있고, 직접 구현해보면서 이론보다는 피부로 와닿아서 그간 공부했던 것들이 바로바로 이해가 되는 경험이 많았습니다. 저는 구동되는 것을 봐야 하고 되는 것을 보면서 실전으로 느껴야 이해를 잘하는 편이기에 섹션 공부를 하면서 이해가 안 되었던 점이 프로젝트를 하면서 이해가 많이 갔습니다. 그렇기 때문에 저는 프로젝트에서 배운것이 너무 많고, 진짜 개발한다는 느낌을 들어서 시간 가는 줄 몰랐습니다. 그리고 온전히 개발만 하지 않고 많은 기획을 세워야 하고 깃허브에 기록을 남기는 등 개발자는 개발만 할..

    코드스테이츠 후기 (Section3 마무리)

    길고 긴 더닝 크루거 곡선 처럼 지나갔던 섹션 3였습니다. 그렇기에 이 글을 쓰는데 고민을 했는데, 후기, 회고글을 쓰는 것도 내가 뭐라고 이런 걸 쓰나 싶은 생각이 정말 많이 들지만 다른 분들께 경험을 드리거나 생각을 공유할 수 있는 부분으로 후기 글을 계속 쓰게 되었습니다. 아무래도 댓글은 없어도 후기글이 조회수가 가장 높더라고요. 그래서 조금이나마 도움이 되었으면 좋겠고, 모두 잘 되셨으면 좋겠습니다. 1. 기수이동 저는 section3에서 처음으로 기수 이동을 했습니다. 백엔드를 원하는 저에게는 결과적으로는 복습하게 되어 저에게 많은 득이 되었고, 프로젝트를 같이할 팀이 미리 생겼습니다. 저는 기수이동을 부끄럽게 생각하거나 안좋게 생각할 분이 있을 수도 있지만, 제가 생각하기엔 전혀 그럴 필요가 ..

    Toy 문제 27

    문제 세로와 가로의 길이가 각각 M, N인 마을지도가 배열로 주어졌을 때, '1'은 주민이 있는 집을 의미하고 '0'은 주민이 없는 땅을 의미합니다. 이 마을은 소문이 시작되면 하루에 상하좌우 한 칸 바로 옆에 있는 집으로 퍼집니다. 특정 주민의 집 (R, C)으로부터 어떤 소문이 시작될 경우, 마을 전체로 소문이 퍼지는데 걸리는 시간(일)을 리턴해야 합니다. /* 1. 시작: (1, 2)에서 시작, 소문이 퍼진 곳을 x로 표기 [ '0101', '01x1', '0110', '0100', ] 2. 1일 뒤 [ '0101', '0xxx', '01x0', '0100', ] 3. 2일 뒤 [ '0x0x', '0xxx', '0xx0', '0100', ] 4. 3일 뒤: 소문이 전부 퍼짐 (끝) [ '0x0x',..

    Toy 문제 26

    문제 정수를 요소로 갖는 배열을 입력받아 다음의 조건을 만족하는 LSCS*를 리턴해야 합니다. LSCS: 주어진 배열의 연속된 부분 배열*의 합을 구한다고 할 때, 이 중 가장 큰 값 Advanced LSCS를 계산하는 효율적인 알고리즘(O(N))이 존재합니다. 수도코드(해석) 2중for문을 사용하여서 해결이 가능하지만, N의2승 시간복잡도가 나오기 때문에 for문을 한번만 사용하여야 합니다. 이러한 해결을 값에 대한 비교를 한번에 2번하여 해결 가능합니다. 배열의 처음부터 시작하여 i번 째 인자 하나하나를 더해주면서 Math.max 를 이용하여 큰 값을 result에 담아주는 방식 입니다. 두개의 변수를 만들어 주어서 arr[0]을 담아놓습니다. 반복문이 시작하면서 arr[i]을 더하여 비교해줍니다. ..

    Toy 문제 25

    문제 세로와 가로의 길이가 각각 M, N인 방의 지도가 2차원 배열로 주어졌을 때, 1은 장애물을 의미하고 0 이동이 가능한 통로를 의미합니다. 로봇은 지도 위를 일분에 한 칸씩 상하좌우로 이동할 수 있습니다. 로봇의 위치와 목표 지점이 함께 주어질 경우, 로봇이 목표 지점까지 도달하는 데 걸리는 최소 시간을 리턴해야 합니다. 주의사항 M, N은 20 이하의 자연수입니다. src, dst는 항상 로봇이 지나갈 수 있는 통로입니다. src에서 dst로 가는 경로가 항상 존재합니다. 입출력 예시 let room = [ [0, 0, 0, 0, 0, 0], [0, 1, 1, 0, 1, 0], [0, 1, 0, 0, 0, 0], [0, 0, 1, 1, 1, 0], [1, 0, 0, 0, 0, 0], ]; let ..

    Toy 문제 24

    문제 정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다. 입력 인자 1 : arr number 타입을 요소로 갖는 배열 arr[i]는 0 이상의 정수 arr.length 100,000 이하 출력 number 타입을 요소로 갖는 배열을 리턴해야 합니다. 배열의 요소는 오름차순으로 정렬되어야 합니다. arr[i] [1, 3, 21] 수도코드(해석) 기수정렬을 사용하는 문제입니다. 기수정렬은 낮은 자리수 부터 비교하여 정렬해간다는 것을 기본 개념으로 하는 정렬 입니다. 시간 복잡도는 O(d * (n + b)) == O(dn)으로 매우 빠른편이지만 부동 소숫점 실수 같이 자릿수가 없는 경우 정렬할 수 없는 것이 단점 입니다. 여러 블로그를 참고했지만 이 이미지가 제일 이해하기 쉽고 간결해..

    Toy 문제 22

    문제 2차원 N x N 배열을 시계 방향으로 90도 회전시킨 배열을 리턴해야 합니다. Advanced 세로와 가로의 길이가 각각 M, N인 2차원 M X N 배열을 시계방향으로 90도씩 K번 회전시킨 배열을 리턴해 보세요. 회전수가 두 번째 입력으로 주어집니다. 출력 2차원 배열을 리턴해야 합니다. 입출력 예시 const matrix = [ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16], ]; console.log(matrix[0][0]); // --> 1 console.log(matrix[3][2]); // --> 15 const rotatedMatrix = rotateMatrix(matrix); console.log(rotatedMatr..

    Toy 문제 21

    문제 아래와 같은 과정을 거쳐 부등호 수(inequalityNumber)를 만들 수 있습니다. 최대 9개의 부등호()가 주어집니다. 부등호의 좌우에는 0부터 9사이의 숫자가 한 번씩만 들어가야 합니다. 부등호를 만족하는 숫자의 조합을 차례대로 이어 붙여 만든 정수를 부등호 수라고 한다. 부등호 기호들을 입력받아 부등호를 만족하는 최대 부등호 수와 최소 부등호 수의 차이를 리턴해야 합니다. 주의사항 첫 자리가 0인 경우도 부등호 수에 포함되어야 합니다. 모든 입력에 답은 항상 존재합니다. 입출력 예시 let output = inequalityNumber(''); console.log(output); // --> 876 (897 - 021) output = inequalityNumber('> '); c..

    [배포] 자동화

    서비스가 규모가 복잡해지고 커질수록, 서비스를 배포하는 과정이 복잡해지고 소요되는 시간이 늘어나게 됩니다. 서비스의 변경 사항이 생길 때마다 배포 과정을 매번 수동으로 진행한다면, 배포 과정에 많은 시간을 허비해야 할 것입니다. 배포 자동화란 한 번의 클릭 혹은 명령어 입력을 통해 전체 배포 과정을 자동으로 진행하는 것을 뜻합니다. 먼저 수동적이고 반복적인 배포 과정을 자동화함으로써 시간이 절약됩니다. 휴먼 에러(Human Error)를 방지할 수 있습니다. 여기서 휴먼 에러란 사람이 수동적으로 배포 과정을 진행하는 중에 생기는 실수를 뜻합니다. 그전에 했던 배포 과정과 비교하여 특정 과정을 생략하거나 다르게 진행하여 오류가 발생하는 것이 휴먼 에러의 예로 볼 수 있습니다. 배포 자동화를 통해 전체 배포..