멋사/TIL 39

230523 6주 2일차 TIL. DAO, executeQuery, executeUpdate, Connection 분리

DAO (Data Access Object) DAO란 DB의 데이터에 접근하기 위한 객체로 DB에 쿼리를 실행하는 기능을 한다. 그래서 User 클래스를 만들고 dao 패키지에 User 객체가 데이터베이스에 접근할 수 있는 UserDao 클래스를 만듦. get(), add() 메소드 등 생성함. executeQuery executeQuery는 SQL 구문 실행 후 ResultSet이라는 객체를 반환한다. select 구문 실행 시 사용된다. PreparedStatement pstmt = conn.prepareStatement("select id, name, password from users where id = ?"); pstmt.setString(1, id); ResultSet rs = pstmt.ex..

멋사/TIL 2023.05.23

230522 6주 1일차 TIL. DB 연동, Statement, PreparedStatement, DB 접속 정보 변수 처리

DB 연동 public void check() throws ClassNotFoundException, SQLException { Class.forName("com.mysql.cj.jdbc.Driver"); Connection conn = DriverManager.getConnection( dbHost, dbUser, dbPassword ); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("show databases"); while (rs.next()) { String line = rs.getString(1); System.out.println(line); } } Class.forName() 메소드로 jdbc 드라이버를 ..

멋사/TIL 2023.05.22

230518 5주 4일차 TIL. 괄호 풀기, DB 연관관계, Dump

괄호 풀기 public class BracketWithoutStack2 { public static void main(String[] args) { String brackets = "((()()))())"; while (brackets.indexOf("()") != -1) { String[] split = brackets.split("\\(\\)"); System.out.println(Arrays.toString(split)); brackets = String.join("",split); System.out.println(brackets); } } } DB 연관관계 course-student-db를 구현하면서 user 테이블과 course 테이블을 연결해야 했는데 두 테이블을 연결하는 방법은 2가지가 있..

멋사/TIL 2023.05.18

230517 5주 3일차 TIL. 스택, DB

스택스택은 각티슈, 감자칩과 같다. 위에 있는 것이 먼저 나오고, 먼저 들어간 것이 아래에 깔린다. push : 감자칩을 넣는것 pop : 감자칩을 꺼내는 것 peek : 맨 위의 값을 확인하는 기능 (꺼내지 않음) isEmpty : 비었는지 확인. pop이나 peek 전에 보통 isEmpty로 확인함. jvm에도 스택 영역이 있다. 스택 영역에는 primitive 타입 변수가 저장되는데, 함수 호출 과정도 스택에서 관리한다. 예를 들어 다음 식을 계산하면, plus(minus(30, multiple(4 * 5)) , 20) = plus(10, 20) → push plus() → push minus() → push multiple() → pop multiple() → pop minus() → pop pl..

멋사/TIL 2023.05.17

230516 5주 2일차 TIL. 선택정렬, 삽입정렬

삽입정렬 삽입 정렬은 i번째 값이 들어갈 위치를 찾아 삽입하는 것 같다하여 삽입 정렬이라 한다. 삽입 정렬의 i는 1부터 시작한다. 인덱스 i번째 값과 그 왼쪽에 있는 값들을 비교한다. i와 i-1, i와 i-2 …. 이런식으로 진행된다. 진행 로직을 나타내면 길이가 3인 배열일 경우 i = 1일 때 인덱스 1과 인덱스 0 비교, i = 2일 때 인덱스 2와 인덱스 1 비교, i = 2일 때 인덱스 1과 인덱스 0 비교, i = 3일 때 인덱스 3과 인덱스 2 비교, i = 3일 때 인덱스 2과 인덱스 1 비교, i = 3일 때 인덱스 1과 인덱스 0 비교 이런식으로 진행된다. 가장 오른쪽에서부터 가장 오른쪽 값과 그 왼쪽값. 그 다음은 한칸 왼쪽으로 옮겨가서 해당 값과 그 왼쪽값을 비교하는 형식이다. ..

멋사/TIL 2023.05.16

230515 5주 1일차 TIL. 버블 정렬, EC2, Docker

버블정렬 버블 정렬은 arr[i]와 그 다음 값인 arr[i + 1]을 비교하기 때문에 for문의 조건식을 배열길이 -1 로 해주어야 한다. i가 배열길이만큼 돌게 되면 i + 1은 존재하지 않는 값이기 때문에 오류가 발생하게 된다. int[] arr = {7, 2, 3, 9, 28, 1}; for (int i = 0; i arr[i + 1]) { int temp = arr[i]; arr[i] = arr[i + 1]; arr[i + 1] = temp; } System.out.println(Arrays.toString(arr)); } 위 코드 실행 시 정렬이 완벽하게 되지 않음을 확인할 수 있다. 왜냐하면 i와 i + 1 인접한 두 값만 ..

멋사/TIL 2023.05.15

230511 4주 4일차 TIL. List, ArrayList

배열은 한번 선언하면 크기를 변경할 수 없다. 그래서 나온 것이 List이다. List 자료형List는 Collection 인터페이스를 구현한 인터페이스로, 배열과 다르게 동적으로 크기를 변경할 수 있는 자료구조이다. List의 구현체로는 ArrayList, LinkedList 등이 있다. List 선언과 초기화List l1 = new ArrayList();List는 다음과 같이 선언한다. 부모오브젝트 변수명 = new 자식오브젝트( ); .add( ) : 값 추가l1.add("hello"); l1.add(1);add( ) 는 리스트에 값을 넣을 때 사용하는 메소드이다. 리스트 l1은 위에서 선언할 때 타입을 지정해주지 않았기 때문에 String과 int형 모두 추가가 가능한 것이다. .get( ) : ..

멋사/TIL 2023.05.11

230508 4주 1일차 TIL. 입력 받은 높이만큼 피라미드 출력

높이 입력받아 피라미드 모양으로 별 출력하기 피라미드 모양으로 *을 출력하려면 공백의 개수와 *의 개수를 고려해야 한다. for문으로 높이 h가 4라고 했을 때 공백과 별의 개수를 살펴보면 * -> i = 0일 때 공백 3개, 별 1개 ** -> i = 1일 때 공백 2개, 별 2개 *** -> i = 2일 때 공백 1개, 별 3개 **** -> i = 3일 때 공백 0개, 별 4개 공백 = h - i - 1개, 별 = i + 1개임을 알 수 있다. public static void main(String[] args) { Scanner sc = new Scanner(System.in); int height = sc.nextInt(); for (int i = 0; i < height; i++) { Syst..

멋사/TIL 2023.05.09

230503 3주 3일차 TIL. Codeup 1274, 프로그래머스 소인수분해

소수 구하기에서 소수란 1과 자기 자신만을 약수로 갖는 수를 말한다. 처음 코드를 작성할 땐 for문으로 2부터 n-1 까지 나누어 떨어지는 수가 없으면 소수로 판별하도록 작성했는데 for문의 조건값을 루트 n으로 줘도 된다는 사실을 배웠다. 사실 예전에도 한번 봐서 알고 있었는데 그때보고 쓸일이 없어서 까먹고 있었다. 역시 뭐든 계속하지 않으면 까먹는다.. 그래서 코드를 수정했다. 근데 Math.sqrt는 반환값이 double형이기 때문에 사용 시 주의해야 한다. 나는 소인수분해 문제를 풀 때 배열크기에도 sqrt를 사용했는데 배열 크기는 int값으로 줘야하기에 오류가 발생했다. 그래서 (int)를 붙여 타입 캐스팅을 해줬다. 아니면 n/2로 주어도 괜찮다. Codeup 1274 소수 판별 https:..

멋사/TIL 2023.05.03