전체 글

초보 개발자의 공부 블로그입니다.
인프런 김태원 님 강좌를 듣고 정리한 내용입니다. 냅색 문제? 짐 싸기 문제 또는 배낭 문제라고 불리며 범위가 늘어날수록 시간초과의 위험이 있어 DP(동적 계획법)으로 푸는 경우가 많다. 서로 다른 가치를 지닌 보석의 종류가 주어지고 가방에는 담을 수 있는 무게제한이 있을 때 보석을 최대한의 가치로 가방에다 담는 문제로 많이 출제된다. 즉, 여러 물건이 있을 때 특정한 조건을 만족하는 조합을 구하는 문제이다. 강의에서는 두가지 방법으로 냅색문제를 푸는 방법을 제공한다. 1. 문제 종류나 보석의 종류가 무한개 있을 때는 앞에서부터 해결한다. 2. 개수가 정해져 있을 때, 종류마다 한 개씩 존재, 유한개면 뒤에서부터 해결한다. 강의에 나온 예제를 두가지 방법으로 각각 풀어보자. 1. 동전교환(최소갯수 구하기..
패스트캠퍼스x야놀자 백엔드 부트캠프 중 [자료구조 및 알고리즘] 김태원 강사님 강좌를 듣고 정리한 내용입니다. 구현 문제란? 작은 의미로는 문제가 제시한 규칙에 따라 개체를 이동시키는 알고리즘을 의미하며, 큰 의미로는 문제가 요구하는 대로 시행되도록 코드를 구현하는 알고리즘이다. 개체이동방법 개체이동방법은 두가지가 있다. 4방향 탐색 8방향 탐색 4방향 탐색 방법 위와 같이 좌표를 가진 x, y 그래프를 코딩테스트에서는 2차원 배열로 표기가 된다. 구현 문제를 풀다보면 해당 좌표에서의 이동이 기본 베이스로 필요할 때가 있다. 우선 4방향 탐색을 알아보자. [r, c]의 상하좌우 이동 시 값의 변화 [2, 1] - 기본값 [1, 1] - 상 [3, 1] - 하 [2, 0] - 좌 [2, 2] - 우 [r,..
Do it! 알고리즘 코딩 테스트 자바 편 인프런 강좌를 기준으로 작성하였습니다. 알고리즘에서 시간복잡도는 주어진 문제를 해결하기 위한 연산 횟수를 말합니다. 일반적으로 수행 시간은 1억 번의 연산을 1초의 시간으로 간주하여 예측합니다. 시간 복잡도 정의하기 실제 시간 복잡도를 정의하는 유형은 3가지입니다. 빅-오메가 : 최선일 때(best case)의 연산 횟수 빅-세타 : 보통일 때(average case)의 연산 횟수 빅-오 : 최악일 때(worst case)의 연산 횟수 0~99 사이의 무작위값을 찾아 출력하는 코드입니다. 빅-오메가의 경우 최선의 때 이므로 무작위값이 1일 경우이므로 시간 복잡도는 1입니다. 빅-세타의 경우 평균이므로 2/N 번, 빅-오는 최악의 경우인 99가 나올 때이므로 시간..
패캠 부트캠프에서 진행하는 첫 번째 팀 프로젝트이다. 5명의 조원으로 구성되었고 5일 동안 진행되었다. 기능 구현은 매우 단순 했으나 팀 프로젝트가 거의 1년 만이라 단순한 기능의 비해 많이 시간이 소요되었다. 프로젝트 주제 및 진행과정 정의하고 미숙했던 부분과 궁금한 사항을 정리해 보자. 과제 주제 Java Application을 활용한 간단한 여행/여정 기록 및 조회하기 1. Json, csv 파일로 데이터 입출력하기 2. 예외처리 3. MVC 패턴 활용하기 프로젝트 진행 과정 1. 요구사항 분석 간단한 팀원소개 이후 요구사항을 분석을 먼저 진행하였다. 요구하는 기능이 주어진 인원보다 적을 수 있어 5명의 팀원이 각각의 역할을 분배할 수 있는 요구사항 분석이 중요했다. 기능단위로 요구사항으로 분리하여..
NEXT STEP > 자바 플레이그라운드 with TDD, 클린 코드 자동차 경주 미션 중 해당 강좌의 피드팩 영상을 보면 객체를 객체스럽게 사용하도록 리팩터링 해라 라는 내용이 나오고 getter, setter 사용을 지양하라는 말이 나온다. 이것이 의미하는것은 무엇일까? 만약 자동차 경주 미션 중 Car라는 클래스를 추가한 후 name과 position을 상태 값으로 가지는 객체를 추가했다고 가정해 보자. 이 객체의 로직을 하나도 구현하지 않고, 인스턴스 변수에 대한 getter와 setter 메서드만 있는 경우가 있다. public class Car { private String name; private int position = 1; public Car(String name){ this.name ..
💡 과제 주제 Kakao Book Open API를 활용하여 책을 검색하고, 검색한 책 데이터를 데이터베이스에 저장하는 기능을 제공하는 Java Application 개발 할 수 있다. 1차 과제에서 DB 활용이 추가된 과제이다. Java로만 구성된 애플리케이션에 JDBC 연결은 오랜만이라 그 부분만 정리하였다. 💡 JDBC 연결 Maven, Gradle 없이 연결하기 1. java의 sql package 로드 import java.sql.*; 2. MySQL Driver 로드 Class.forName('com.mysql.cj.jdbc.Driver'); - Class.forName는 클래스를 로드해주는 역할이다. com.mysql.cj.jdbc.Driver란 MySQL Driver를 로드해준다. 3. M..
NEXT STEP > 자바 플레이그라운드 with TDD, 클린 코드 자동차 경주 미션 중 테스트하기 힘든 코드 자동차 경주 미션을 기능 중 전진에 대한 기능을 구현할 때 “0에서 9 사이에서 random 값을 구한 후 random 값이 4 이상” 경우 전진한다는 조건이 있다. 전진조건을 테스트하기 위해서는 난수를 생성해야 되는데 난수의 값은 어떤 값이 나올지 판단할 수 없으므로 테스트하기가 힘들다. public class Car { public static final int BOUND = 9; public static final int FORWARD_NUM = 4; .... //자동차 전진 메서드 public void move() { if(makeRandomNum() >= FORWARD_NUM){ th..
💡 과제 주제 이 Java 애플리케이션은 입력에 기반하여 특정 위치 내의 장소를 검색할 수 있도록 합니다. 자신의 위치를 기반으로 특정위치에 있는 장소를 검색하여 출력하는 자바 애플리케이션을 개발할 수 있다. Kakao 로컬 REST API중 키워드로 장소 검색하기, 카테고리로 장소 검색하기 API를 활용할 수 있다 부트캠프 자바기초 교육에서 배운 내용을 활용하여 문제를 해결하는게 중요 포인트이다. 활용 내용 API 활용 Stream 을 이용한 Http 서버와의 I/0 Stream 데이터를 Json 형태로 변환 💡 프로젝트 진행 순서 1. 프로젝트 세팅 JDK 11 Version Gradle JUnit 5 과제의 깃허브에는 Readme 제외하고 빈 자바 프로젝트이다. 그렇기 때문에 기본설정을 직접 진행하..
JH_DEV77
JH’s 개발블로그