본문 바로가기

백엔드24

코드스테이츠 백엔드 부트캠프 43기 (21,22일차-재귀 회고) 재귀 한달 간의 Section1 수업이 끝나고 Section2에서는 알고리즘, 데이터베이스, 스프링에 대하여 배우게 된다. 코딩테스트를 준비하면서 재귀문제를 몇개 풀어보았기에 재귀의 개념과 문제를 푸는데 어려움이 없었다. 하지만 코드스테이츠에서 제공되는 코딩테스트 재귀 문제 중 마지막 문제를 푸는데 도저히 답이 안나오고 몇시간 머리를 굴려도 답이 해결되지 않았다. 그래서 결국 5시 zoom 세션에서 선생님이 마지막 문제 해설을 해주셨는데 정말이지 매번 엄청 고민한 문제의 해설을 들을때 마다 "와 어떻게 이걸 생각하지?" 라고 생각을 하게 되었다. 그런데 그 전에 페어프로그래밍을 하면서 페어분(비전공자분)한테 내가 기본문제를 설명해주고 풀어줄때면 " 어떻게 이걸 생각해요? " 라고 물어보신게 떠올랐다. 그.. 2023. 1. 13.
코드스테이츠 백엔드 부트캠프 43기 (19,20일차-Section1 회고) 한 달 진행 후기 백엔드 부트캠프를 하기전 내가 얻고자 했던 것 1. 전공에 대한 부족한 부분을 채우자. 2. 다양한 사람들과 많이 소통해보자. 3. 프로젝트 경험을 쌓자 (협업 능력). 4. 규칙적인 생활 + 훈련수당 1. 전공에 대한 부족한 부분을 채우자. 대학을 다니면서 과제와 시험에 쫓기다 보면 메타인지를 깨닫지 못하고 오로지 시험에 나올 필요한 부분과 효율적이지 못한 공부를 하게 되었다. 그래서 전공자 임에도 완벽하지 못한 걸 깨달았고 이러한 부분을 채우고 싶었다. 확실히 부트캠프를 진행하면서 한 번 배운 내용을 보게 돼서 그런지 전체적인 흐름을 알 수 있었고 내용, 개념을 아는 것보다는 이걸 왜 사용하는지에 대해 초점을 맞추다 보니 점점 전공에 대한 살 이 붙기 시작하였다. 학부 시절에는 깃허.. 2023. 1. 11.
코드스테이츠 백엔드 부트캠프 43기 (16,17일차-자바 심화 회고) 자바 심화 애너테이션, 람다, 스트림을 배웠다. 학부시절 별로 사용하지 않는것 같아(어려웠음...) 제대로 배우지 않고 넘어갔던 부분 그리고 코딩테스트를 준비하면서 몇 알고리즘은 정말 말도 안되게 짧은 코딩이 있었다. 그리고 나는 그걸 보고 "와 야무지다... 저건 무슨 문법이지? " 라고 했던게 바로 스트림 이였다. 그런데 오늘 딱 마침 자바심화에서 람다와 스트림을 배우게 되었다. 아직 람다, 스트림을 완벽히 내 몸으로 흡수하지 못하여 오늘은 간단한 개념정도만 정리하려고 한다. 람다 람다는 우리가 사용하는 메서드를 좀 더 간단하고 편리하게 사용하기 위한 문법이다. // 기존 방식 int sum(int num1, int num2) { return num1 + num2; } // 람다식 -> * 메서드 이.. 2023. 1. 7.
코드스테이츠 백엔드 부트캠프 43기 (14,15일차-컬렉션 회고) 열거형 상수들을 관리하기 위함 타입에 대한 안정성을 보장 - 아직 활용을 해보지 않아 몸소 와닿지 않는다. 제네릭 해시맵이나 어레이리스트를 생성해보면 ArrayList ?? = new ArrayList(); 이런식으로 선언이 된다. 여기서 이 안에 고정값이 아닌, String 이나 Integer 참조타입을 사용자가 원하는 타입을 넣을 수 있다. 이 같은 기능을 제네릭이라고 한다. 설정으로 ArrayList가 밑에 코드인거 처럼 가정한다면, T라고 선언을 하면 어떤 타입으로든 받을수 있다. class ArrayList { private T item; public ArrayList(T item) { this.item = item; } public T getItem() { return item; } publi.. 2023. 1. 5.
코드스테이츠 백엔드 부트캠프 43기 (13일차-버거퀸 프로젝트 회고) 버거퀸 프로젝트 버거퀸 프로젝트를 진행하면서 패키지를 나누고 그 안에 적절한 class를 넣으면서 모든 기능을 분리하는 역할을 프로젝트를 하면서 배우게 되었다. 하나의 클래스를 만들면서도 그 클래스는 자신의 역할만 수행해야하는 개념을 배우게 되었고 그렇게 되기 위해서는 추상화와 다형성은 필수였다. 추상화를 통하여 클래스간 인터페이스 역할을 해주었고 다형성을 통하여 추상화된 객체들을 하나의 변수에 받을 수 있게되므로 외부에서 객체를 주입할 수 있게되었다. -생성자를 통하여 객체를 외부로부터 주입받아 사용하자. 어떤 클래스를 자신의 역할만 수행해야 한다. 자신의 역할안에서 다른 인스턴스를 생성하고 그의 기능을 수행하는 거는 객체지향 역할에서 벗어나는 행위이다. 그렇기에 다른 객체를 받을때는 생성자를 통해 외.. 2023. 1. 2.
코드스테이츠 백엔드 부트캠프 43기 (11,12일차-객체지향심화 회고) 객체지향심화 객체지향심화를 배우면서 많은 것을 배우고 느끼게 되었다. 객체지향심화에는 상속, 다형성, 추상화, 캡슐화가 대표적인 주제였다. 대학시절 자바응용을 배우면서 배운 내용이긴 하지만 중요하게 생각하지 않아 대충 보고 넘기게 되었었다. 하지만 이번 객제치향심화를 배우면서 내가 잘 못된 객체지향코딩을 하고 있었구나 하고 깨닫게 되었다. 객체지향에 있어 위의 4가지 키워드는 매우 중요했으며 객체지향적 프로그램 관리를 하기위해서 꼭 필요한 키워드이다. 상속 쉽게 말해 물려 받는다. class Person { String name; int age; void learn(){ System.out.println("숨을 쉰다"); }; void walk(){ System.out.println("공부한다."); }.. 2022. 12. 31.
코드스테이츠 백엔드 부트캠프 43기 (10일차-객체지향 회고) 생성자 클래스에는 적어도 하나 이상의 생성자가 존재한다. 생성자를 통하여 객체 인스턴스의 변수들을 초기화 할 수 있다. - 생성자 명은 클래스 이름 - 리턴 타입은 없다. - 오버로딩 가능 - this() -> 생성자 내부에서만 생성이 가능, 다른 생성자를 호출할 때 사용 - this는 객체자신의 변수 tip // 클래스는 와 그리고 (생성자)와 (이너 클래스)로 구성 될 수 있다. // 클래스 메서드(스태틱) 안에서는 this를 사용할 수 없다. this 키워드는 인스턴스가 자기 자신을 가리킬 때 사용 객체지향 프로그래밍 기초를 배우면서 확실히 개념을 알고있는 상태에서 공부를 하니 이해가 더욱 잘 되며 모르는 부분에 집중을 할 수 있어 공부가 계획대로 잘 되가고 있다. 내일 부터는 객체지향 프로그래밍 .. 2022. 12. 29.
코드스테이츠 백엔드 부트캠프 43기 (9일차-객체지향 회고) 객체지향 프로그램을 객체로 나누어 결합도는 낮추고 응집도는 높이기 위한 프로그래밍. 자바는 클래스를 통하여 객체를 생성한다. 먼저 자바의 작동원리 (운영체제의 종류에 상관없이 JVM을 통해 실행) .java 파일은 컴파일을 통해 .class 파일로 바뀌어 JVM에 입력된다. JVM 내부에서 Class Loader를 통하여 Runtime Data Area에 로딩된다. Runtime Data Area 내부에는 대표적으로 (스택, 힙)이 있다. 1. 일반 변수를 선언시 변수와 변수의 값은 스택에 저장이 된다. //코드에서 int age = 29; 을 선언했을 때 2. new를 통해 참조변수를 생성하면 주소값은 스택에 저장이 되고 주소값의 내용은 힙에 저장이 된다. //코드에서 String name = new .. 2022. 12. 27.
코드스테이츠 백엔드 부트캠프 43기 (8일차-Java 회고) 배열 오늘 배운 배열 메서드 System.arraycopy(src, srcPos, dest, desPos,length) // 새로운 배열을 리턴하는게 아님 , 두 배열을 합칠때 유용함 arr1 = {1,2} arr2 = {3,4} 두 ARRAY 배열을 붙여서 하나의 ARRAY3 배열로 만들고 싶을 때 ARRAY3 = {1,2,3,4} 되기를 원함 System.arraycopy(arr2, 0, arr1, 0, arr1.length); // arr1 배열의 0번째 부터 arr2배열에, 0번째 위치부터 시 작, 복사하려는 길이인 arr1.length 길이만큼 복사 // 최종적으로 array3 에는 [1],[2] 로 복사됨 int[] arr1 = {1,2,0,0}; int[] arr2 = {3,4}; Syste.. 2022. 12. 26.