💡 Intro 저번주 금요일에 졸업식을 가느라 우테코 수업에 참여하지 못했다. 여태까지 했던 수업들과는 좀 다르게 어려운 내용을 다루었던 것 같고 그 내용에 대해 크루들에게 자세하게 설명을 전해들었다. 그 중에서도 전 페어가(아크) 정리한 글의 내용이 한 번에 이해할 수 있을만큼 좋아서 그 내용을 참고하여 내가 이해한 방식으로 다시 정리해보려고 한다. ❓ 동등성(identity) 동일한 정보를 가지고 있는 오브젝트를 의미한다. 메모리 상에 다른 오브젝트가 존재하는 것이고, 오브젝트의 기준에 따라 동등하다고 판단한다. 자바에서 동등성을 비교하기 위해서는 == 이 아닌 .equals를 사용해야 한다. 하지만 코틀린에서 == 연산자는 내부적으로 .equals를 호출하기 때문에 코틀린에서 동등성을 비교하기 위해..
💡 Intro 우테코를 시작한지 2주 정도 됐고 처음으로 글을 쓰는 것 같다. 하루에 왕복 네 시간씩 걸리는 통학을 하다보니 6시 이후로 공부하기도 공부의 흔적을 남기기도 쉽지 않다. 2주 됐는데 2달 된 것 같은 이 느낌. 짧은 시간이긴 하지만 배운 것도, 느낀 것도 많다. 시간 날때마다 작성해서 남겨봐야겠다. 🚗 자동차 경주 미션 가장 먼저 진행한 미션은 자동차 경주 미션이다. 프리코스를 진행하면서 들어갔던 스터디에서 프리코스가 끝난 이후에도 이전 미션들을 찾아보면서 준비했었는데 자동차 경주 미션도 그 중 하나였다. 그래서 요구사항이나 클래스를 구분하는 것이 굉장히 익숙했지만 그럼에도 불구하고 많은 피드백을 받았다. 우테코를 진행하면서 이전과 가장 달라진 점은 구현한 기능마다 단위 테스트를 한다는 것..
알고리즘 문제를 풀고있는 요즘 바킹독 선생님의 영상과 문제 풀이를 많이 참고하고 있다. 바킹독 선생님의 풀이를 보면 include를 를 사용하여 한 번에 끝내신다. 여기에는 알고리즘 문제를 해결하기 위해 주로 사용하는 헤더들을 모두 include하고 있다. 이 헤더파일은 gcc 계열의 컴파일러에 미리 내장되어 있고, 그래서 대부분의 문제풀이 사이트에서 위 헤더파일을 사용할 수 있다. 하지만 윈도우 기반인 나는 visual studio를 사용하고, visual studio는 기본적으로 를 포함하고 있지 않기 때문에 따로 설정을 해줘야 한다. 그 전에 간단하게 장단점을 살펴보면 장점 자주 사용되는 라이브러리를 include 해주기 때문에 일일이 추가해야하는 번거로움이 적다. 단점 사용하지 않거나 불필요한 라..
📡 회원관리예제 - 웹 MVC 개발 이제까지 만들어둔 코드를 바탕으로 웹 MVC를 기반으로 회원관리 예제를 만들어보도록 하자. 해야할 일은 다음과 같다. 회원 웹 기능 - 홈 화면 추가 회원 웹 기능 - 등록 회원 웹 기능 - 조회 1. 회원 웹 기능 - 홈 화면 추가 src/main/java/hello.hellospring/controller 아래 HomeController 파일을 하나 만들어주자. 코드는 다음과 같다. "/"는 localhost:8080으로 들어왔을 때의 첫 페이지를 의미한다. localhost:8080으로 들어왔을 때 home.html이 실행이 된다. 이를 위해 src/java/resources/templates 아래 home.html 파일을 생성하자. 코드는 아래와 같다. Hell..
💡 Map map은 각 노드가 key-value 쌍으로 이루어진 트리이며, 키의 중복을 허용하지 않는다는 점이 특징이다. map은 pair객체로 저장이 되고, first↔key, second↔value 이다. C++에서 map은 탐색, 삽입, 삭제가 모두 O(logN)에 이루어질 수 있는 레드블랙트리로 구현되어 있다. Map의 기본 형태 map m; Map의 정렬 map은 자료를 저장할 때 내부적으로 자동으로 정렬하는 특징을 가지고 있다. 이 때 기준은 key값이 되고 오름차순으로 정렬하게 된다. 내림차순으로 정렬하고 싶은경우 2가지 방법으로 할 수 있다. map map1; 처럼 선언할 때 세 번째 인자로 greater를 추가하는 방법 int데이터를 저장할 경우에만 해당되는 것인데 데이터를 음수화하여 저..
💡 Intro 코딩테스트를 C++로 준비하면서 익숙하지 않은 STL들의 사용법을 정리하려고 한다. 이번에는 string 문자열을 거꾸로 돌려주는 std::resverse 함수에 대해 알아보려고 한다. 💡 std::reverse std::reverse 함수 선언 template void reverse(const _BidIt _First, const _BidIt _Last) reverse elements in [_First, _Last) 와 같은 주석도 함께 달려있는데 first부터 last바로 전 인덱스까지의 요소들을 거꾸로 뒤집는 역할을 한다고 볼 수 있다. std::reverse 함수 정의 에서 중요한 부분을 떼오면 다음과 같다. void reverse(const _BidIt _First, const ..
🐥 Counting Sort counting sort는 정렬 알고리즘 중 가장 간단한 알고리즘으로 볼 수 있다. 그냥 각 수가 나오는 횟수를 세고, 그 횟수만큼 출력해주면 되기 때문이다. 아래 그림을 보면 더 잘 이해가 될 것이다. 위와 같은 리스트가 있다고 가정하자. 리스트에서 값이 1부터 6까지 나오기 때문에 해당 값이 몇번 나왔는지 배열에 저장하고 오름차순으로 횟수만큼 출력해주면 정렬이 되는 것을 볼 수 있다. 💥 단점 counting sort를 사용하기 위해서는 각 수가 나온 횟수를 저장해줘야 한다. 이는 미리 큰 테이블을 만들어두고 대응되는 원소의 값을 증가시키는 방식으로 구현이 가능하다. 예를들어 만약 나오는 수가 1부터 999까지라고 하면 int freq[1000] 와 같이 선언하여 사용하면..
🥔 스프링 빈과 의존관계 스프링 빈을 등록하는 2가지 방법 컴포넌트 스캔과 자동 의존관계 설정 자바 코드로 직접 스프링 빈 등록하기 컴포넌트 스캔과 자동 의존관계 설정 회원 컨트롤러가 회원서비스와 회원 레파지토리를 사용할 수 있도록 의존 관계를 준비하자. src/main/java/hello.hellospring/controller 하위에 MemberController파일을 만든다. MemberController package hello.hellospring.controller; import hello.hellospring.service.MemberService; import org.springframework.beans.factory.annotation.Autowired; import org.spring..