목록전체 글 (41)
희디비
💡 문제 동근이는 무인 경비 회사 경비원으로 항상 대기하고 있다가 호출이 들어오면 경비차를 몰고 그 곳으로 달려가야 한다. 동근이가 담당하고 있는 곳은 직사각형 모양의 블록으로 블록 중간을 가로질러 차가 통과할만한 길이 없다. 이 블록 경계에 무인 경비를 의뢰한 상점들이 있다.예를 들어 가로의 길이가 10, 세로의 길이가 5인 블록의 경계에 무인 경비를 의뢰한 3개의 상점이 있다고 하자. 과 같이 이들은 1, 2, 3으로 표시되어 있고, 동근이는 X로 표시한 위치에 있다. 1번 상점에서 호출이 들어 왔을 때 동근이가 블록을 시계방향으로 돌아 이동하면 이동 거리가 12가 된다. 반면 반시계방향으로 돌아 이동하면 이동 거리는 18이 된다. 따라서 동근이가 1번 상점으로 가는 최단 거리는 12가 된다. 마찬..
💡 문제 N명의 사람들은 매일 아침 한 줄로 선다. 이 사람들은 자리를 마음대로 서지 못하고 오민식의 지시대로 선다. 어느 날 사람들은 오민식이 사람들이 줄 서는 위치를 기록해 놓는다는 것을 알았다. 그리고 아침에 자기가 기록해 놓은 것과 사람들이 줄을 선 위치가 맞는지 확인한다. 사람들은 자기보다 큰 사람이 왼쪽에 몇 명 있었는지만을 기억한다. N명의 사람이 있고, 사람들의 키는 1부터 N까지 모두 다르다. 각 사람들이 기억하는 정보가 주어질 때, 줄을 어떻게 서야 하는지 출력하는 프로그램을 작성하시오 ⌨ 입력 첫째줄 사람의 수 N이 주어진다. N
💡 문제 오늘도 서준이는 병합 정렬 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. N개의 서로 다른 양의 정수가 저장된 배열 A가 있다. 병합 정렬로 배열 A를 오름차순 정렬할 경우 배열 A에 K 번째 저장되는 수를 구해서 우리 서준이를 도와주자. 크기가 N인 배열에 대한 병합 정렬 의사 코드는 다음과 같다. merge_sort(A[p..r]) { # A[p..r]을 오름차순 정렬한다. if (p < r) then { q
🙄 알고리즘 풀이 최근에 알고리즘 문제를 풀기 시작했다. 풀게된 계기는 내년 하반기에 취업을 하기위해서 준비중인데 알고리즘 테스트 골드2-3정도 까지 문제는 풀수있어야 왠만한 기업 코딩 테스트는 합격 할것같았기 때문이다. 카카오는 골드1 난이도의 문제도 종종 나온다고한다. 골드1 문제는 너무 어려워 보이는데.. 풀 수 있을까? 노력해보자 😱 알고리즘은 어려워... 문제 푸는 방식은 아래의 책을 보고 알고리즘을 종류에 대해 알아보고 solve.ac에 해당 알고리즘의 많이 푼 문제순으로 정렬하여 V2 ~ S4 정도의 문제를 선택하여 풀고있다. 문제를 푼후에 내 풀이를 적고 다른사람의 풀이를 보고 배울점이 있다면 왜 저렇게 풀었는지 생각해본다. 🤔 실력이 늘고 있는건가? 처음 문제를 풀고 다른사람의 답안을 봤..
EC2에 깃을 설치하고 프로젝트를 Clone 합니다. 코드들이 잘수행되는지 테스트로 검증해봅니다! 배포스크립트 작성하기 배포 : 작성한 코드를 실제 서버에 반영 하는것 - git clone 혹은 git pull을 통해 새버전 프로젝트를 받음 - Gradle 이나 Maven을 통해 프로젝트 테스트와 빌드 - EC2 서버에서 해당프로젝트 실행 및 재실행 위 과정을 배포할때마다 명령어를 실행하는 것은 불편함으로 쉘스크립트를 작성합니다. 쉘스크립트 : 리눅스에서 사용할수있는 스크립트 파일의 한종류 Vim : GUI 환경이 아닐경우 사용할수있는 편집도구 deploy(배포).sh 를작성합니다. 오타 책에 오타가 하나있는데 >> {pgrep -f 중괄호 표시가 되어있었다. 문법오류가 있어서 빌드가 안되었다. 쉘스크립..
1.람다식 람다식(Lambda expression)은 메서드를 하나의 식(expression)으로 표현한것이다. 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어지므로 람다식을 "익명 함수" 라고도 한다. 1 - 2 람다식 작성하기 메서드에서 이름과 반환타입을 제거하고 매개변수 선언부와 몸통 { } 사이에 -> 를 추가합니다. int max(int a, int b) { return a > b ? a : b; } 위의 식을 람다식으로 바꾸면 (int a, int b) -> { return a > b ? a : b; } (int a, int b) -> a > b ? a : b (a, b) -> a > b ? a : b return문 대신 '식'으로 대신가능하며 '식' 이므로 끝에 " ; " 을 붙이..
AWS RDS 웹 서비스 백엔드를 다룬다고 했을때, 에플리케이션 코드 작성만큼 중요한것이 DB 다루는 일입니다. 규모가 큰 회사는 DBA 직군 담당자가 있으나, 대용량의 경우 이기때문에 전문성이 필요합니다. 백엔드 개발자가 DB를 몰라도 된다를 의미하는게 아니라, 인원이 적은 서비스에선 개발자가 DB를 다뤄야합니다. AWS 에서는 모니터링, 알람, 백업, HA 구성등을 지원하는 RDS(Relational Database Service)를 제공합니다. RDS 인스턴스 생성하기 AWS에 로그인후 RDS를 검색하고 데이터 베이스 생성을합니다. 책에서는 MariaDB를 사용합니다. DB는 Mysql, MariaDB, PostgreSQL을 추천합니다. - 오픈소스 이므로 상용데이터 베이스 보다 가격이 저렴합니다...
템플릿 엔진 - 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어 클라이언트 템플릿 엔진 브라우저에서 화면을 생성합니다. 서버에서는 Json 혹은 Xml 형식의 데이터만 전달하고 클라이언트에서 조립합니다. ex) View, React.js 서버 템플릿 엔진 서버템플릿 엔진은 서버에서 구동됩니다. Jsp를 예로 들면 서버에서 java코드를 문자열로 만들어 HTML로 변환하여 브라우저로 전달합니다. 머스테치 - 수많은 언어를 지원하는 가장 심플한 엔진입니다. - .java / .js 서버템플릿 , 클라이언트 템플릿을 둘다 지원합니다. - 문법이 다른템플릿 엔진보다 심플 합니다. 머스테치 사용법 - 플러그인 'mustache' 설치 - 의존성 등록 gradle.build 파일 compile('..
JPA 사용 이유 - 반복되는 CRUD(Create, Read, Update, Delete)인한 코드반복이 일어납니다. - 데이터베이스는 어떻게 데이터를 저장할지 초점이 맞춰져 있으나, 객체지향 프로그래밍 언어는 기능과 속성을 관리하는 기술이므로 페러다임 불일치가 일어납니다. User user = findUser(); Group group = user.getGroup(); 객체지향에서는 User과 Group은 부모 자식 관계임을 알수있습니다. User user = userDao.findUser(); Group group = groupDao.findGroup(user.getGroupId()); 데이터베이스의 경우 User, Group을 따로 조회하게 됩니다. (Dao = Data Access Object로..
단위테스트 - TDD 첫번째 단계인 기능 단위의 테스트 코드를 작성하는것 이점 - 코드를 수정 할때마다 println()을 통해 눈으로 검증하지 않아도 된다. - 규모가 큰 서비스에서 새로운 기능을 추가할때 이전의 기능을 보장해준다. 단위테스트를 하기위해 간단한 어플을 만듭니다. @SpringBootApplication - @SpringBootApplication이 있는 위치부터 설정을 읽기때문에 항상 프로젝트의 최상단 위치 - 스프링 부트 자동설정, 스프링 Bean 읽기 생성 모두 자동설정 - SpringApplication.run을 통해 내장WAS 실행 > Tomcat 설치필요X 스프링부트는 내장 WAS를 권장하는데 이를통해 '언제 어디서나 같은 환경에서 스프링 부트를 배포' 가능 @SpringBoo..