전체 글

전체 글

    회고 - SSAFY 11기 지원 및 합격 회고

    SSAFY 11기에 합격하기 위해 노력한 내용에 대해 회고를 하고자 한다. SSAFY 에세이, 시험, 면접 내용 등은 모두 대외비이므로 여기선 내가 SSAFY 11기에 합격하기 위해 한 행동들을 정리할 것이다. 나는 전공자이다. 1. 에세이 가장 먼저 SSAFY 홈페이지 등을 찾아보며 내가 가지고 있어야 할 태도를 정리했다. 이후 이와 연관 지어 SSAFY가 필요한 이유를 솔직하게 작성했다. 에세이에 기반해 면접이 나올 것이 뻔했기에 이에 대한 대답을 막힘없이 하기 위해선 사실을 적어야 한다고 생각했다. SSAFY는 취업을 위한 것이 아니라 교육을 위한 것이라는 것도 고려했다. 2. 테스트 개인적인 생각으로 코딩테스트는 벼락치기가 절대 불가능하다고 생각한다. 마치 수학문제를 푸는 것처럼 유형이 정해져 있..

    회고 - 2023년 회고

    2024년이 되어 다른 사람들을 따라 회고를 작성해보고자 한다. 회고의 중요성을 느낀 지 얼마 되지 않았기에 이제야 회고 작성을 시작하는 것에 대한 아쉬움이 있지만 먼 미래의 어느 순간 많은 양의 회고록이 쌓여있음을 확인하는 날을 기대한다. 2023년 2023년 회고라는 이름을 붙였지만 사실 연초에 대해선 기억나는 것이 크게 없다. 그만큼 의미 없는 시간을 보냈다는 증거이기에 이를 반성하며 작성을 시작한다. 5월 팀프로젝트 학교 강의를 통해 시작한 팀프로젝트에서 Spring Boot를 처음으로 다뤄보았고 이에 대한 큰 흥미를 느껴 백엔드 개발자가 되기로 확정한 고마운 경험이다. 강의에서 프런트엔드, 임베디드, 정보보안 등 다양한 강의를 들었지만 큰 흥미를 느끼지 못했고 장래 직업을 계속 고민하고 있었는데..

    CleanCode - 4. 주석

    4장. 주석 4장에선 주석에 대한 의견, 좋은 주석과 나쁜 주석에 대해 설명한다. 주석은 실패를 만회하기 위해 사용한다. 주석은 기껏해야 필요악이다. 주석은 너무 자주 거짓말을 한다. 부정확한 주석은 아예 없는 주석보다 더 나쁘다. 위의 내용은 책 내용의 일부인데 주석을 좋아하지 않는 것처럼 보인다. 그 이유를 알아보자. 주석은 나쁜 코드를 보완하지 못한다 코드에 주석을 추가하는 일반적인 이유는 코드 품질이 나쁘기 때문이며 주석을 다는 것이 아니라 코드를 정리해야 한다고 한다. 코드로 의도를 표현하라! 주석으로 의도를 표현하는 경우 // 직원에게 복지 혜택을 받을 자격이 있는지 검사한다. if ((employee.flags && HOURLY_FLAG)) && (employee.age > 65) 코드로 의..

    CleanCode - 3. 함수

    3장. 함수 3장에선 함수를 읽기 쉽고 이해하기 쉽게, 의도를 분명하게 표현하게, 직관적으로 내부를 파악할 수 있게 구현하는 방법을 설명한다. 작게 만들어라! 작가의 경험과 시행착오에 의하면 함수는 최대한 작게 만들어야 하며 20줄도 길다고 한다. 블록: 함수가 작을수록 코드 이해가 쉬워지기에 if문 / else문 / while문 등에 들어가는 블록은 한 줄이어야 한다. 들여 쓰기 : 1단 or 2단을 넘어서면 안 된다. 한 가지만 해라! 함수는 한 가지 작업만 해야 한다고 한다. 여기서 '한 가지'의 기준은 추상화 수준으로, 함수 이름 아래에서 추상화 수준이 하나인 단계만 수행한다면 그 함수는 한 가지 작업만 한다는 것이다. 이를 확인하는 다른 방법으로 함수 내에서 의미 있는 이름으로 다른 함수를 추출..

    Java - Short Circuit

    Short Circuit(쇼트서킷)에 대해 알아보자. Short Circuit Short Circuit(쇼트서킷)은 짧은 순회라는 의미로 여러 개의 조건을 검색할 때 앞에서 답이 정해졌으면 뒤의 조건을 확인하지 않는 것이다. 아래는 Short Circuit 동작을 알 수 있는 예시이다. if문 조건으로 a == 0 이거나 ++a == 1인 경우 a의 값을 출력하도록 했다. public class Main { public static void main(String[] args) { int a = 0; if(a == 0 || ++a == 1) { System.out.println("result : " + a); } } } ++a 코드가 있음에도 불구하고 결과는 1이 아닌 0이다. 그 이유는 a == 0이 이..

    알고리듬 - 맨해튼 거리, 유클리드 거리

    문제를 풀던 중 맨해튼 거리라는 개념을 처음 보았다. 이 글을 작성할 지에 대해 고민했는데 작성해 둬서 나쁠 것이 없으니 간단하게나마 정리하고자 한다. 맨해튼 거리 맨해튼 거리(Manhattan distance)는 직교 좌표계에 일정한 좌표축의 점 위에 투영한 선분 길이의 합을 말한다. 간단히 표현하자면 가로, 세로로만 이동했을 때 거리의 합이다. 자세한 내용은 아래에서 확인할 수 있다. https://ko.wikipedia.org/wiki/%EB%A7%A8%ED%95%B4%ED%8A%BC_%EA%B1%B0%EB%A6%AC 맨해튼 거리 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 맨해튼 거리와 유클리드 거리의 비교: 맨해튼 거리인 빨간색, 파란색, 노란색 선의 길이는 모두 12이..

    알고리듬 - 순열

    프로그래머스 2단계에 순열을 활용하는 완전탐색 문제가 보여서 이에 대한 전반적인 내용을 정리하고자 한다. 순열(Permutation) 순열이란 서로 다른 n개 중 r개를 골라 순서를 고려해 나열한 경우의 수이다. 순열의 계산은 아래와 같이 한다. 순열의 개수 계산 구현 식만 알고 있으면 순열의 수 계산을 구현하는 것은 어렵지 않다. public class Main { public static void main(String[] args) { System.out.println(calculatePermutation(10, 3)); } static int calculatePermutation(int n, int r) { int sum = 1; for(int i = 0; i < r; i++) sum *= n--;..

    Java - 배열 복사와 반복, clone()과 arraycopy() 속도 비교

    코딩테스트 문제를 풀던 중 배열을 여러 번 반복해야 하는 상황이 생겼다. String 자료형의 경우 repeat 메서드를 활용하면 되지만 배열은 이런 메서드가 없다. 해당 정보를 찾을 겸 배열의 복사와 반복에 대해 내용을 정리하고자 한다. 얕은 복사(Shallow Copy) 복사라고 말하기도 애매한 경우이다. public class Main { public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5}; int[] copyArr = arr; } } int[] arr = {1, 2, 3, 4, 5}; 코드를 통해 메모리 heap 영역에 배열 데이터가 저장된다. 변수명 arr은 배열 데이터의 주소 정보를 가지고 있다. int[] copyArr ..