전체 글 199

Spring의 DB

Spring에서는 JDBC, MyBatis, JPA 등 여러 가지 방법을 이용하여 다양한 데이터베이스에 접근할 수 있으며 Spring Data 프로젝트에서는 JDBC, JPA, MongoDB 등 다양한 DB 접근 모듈이 제공되고 있다. 이번 포스트에서는 이런 프로젝트가 아닌 일반 JDBC와 JdbcTemplate을 다루도록 하겠다. JDBC DriverManager Java에서 데이터베이스에 접근할 수 있는 기술인 JDBC는 DriverManager라는 클래스를 사용하여 데이터베이스에 연결할 수 있다. 이 드라이버 매니저는 JDBC 드라이버를 관리하는 클래스로 애플리케이션은 이를 이용하여 여러 종류의 데이터베이스에 유연하게 접속할 수 있다. 이는 사전에 데이터베이스의 제조사들이 자신들의 데이터베이스에 접..

2021.03.10 Wed - 게시판 프로젝트, 프로그래머스 데브매칭 준비

최근에는 스프링, 스프링 부트 관련 공고를 자주 찾아보고 있는데 프로그래머스에서 엊그제(3월 8일)부터 백엔드 데브매칭 모집을 시작했다. 2021 Dev-Matching: 웹 백엔드 개발자(상반기) 접수 21년 03월 08일 11:00 ~ 04월 02일 17:00 테스트 21년 04월 03일 13:00 ~ 04월 03일 15:00 programmers.co.kr 데브매칭에서 실제로 취업까지 이어지는 경우는 드물다곤 하지만 그래도 코딩 테스트라도 보고 지원서라도 작성해보면서 최근 나태해진 나 자신을 좀 끌어올릴 수 있는 계기가 됐으면 좋겠다. 일단 코딩 테스트는 참가에 제한이 없으니 다행이지만 작성해야 하는 지원서가 사람인이나 다른 곳처럼 이런저런 항목들이 많은 게 아니라 딱 경력사항이나 진행한 프로젝트 ..

공부 기록 2021.03.10

Add Two Numbers (Linked List)

LeetCode의 Add Two Numbers 문제다. Add Two Numbers - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 연결 리스트로 주어진 역순 숫자들을 각각 합해서 동일하게 역순 숫자들의 연결 리스트로 반환하는 문제다. 이때 리스트의 각 숫자들은 숫자 문자열의 각 자릿수를 역순으로 나열한 것인데 아래와 같은 구조로 주어진다. 예를 들어 [2, 4, 3]의 리스트(연결 리스트지만 일반 리스트로 표현한다)와 [5, 6, 4]의 리스트가 주어지면 [..

Reverse Linked List (Linked List)

LeetCode의 Reverse Linked List 문제다. Reverse Linked List - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 단방향 연결 리스트를 뒤집는 기능을 구현하는 문제다. 별로 어려운 문제는 아닌데 다음처럼 파이썬의 다중 할당(multiple assignment)을 사용해서 간단하게 풀 수 있어서 포스팅으로 남긴다. class Solution: def reverseList(self, head: ListNode) -> ListNode..

Merge Two Sorted Lists (Linked List)

LeetCode의 Merge Two Sorted Lists 문제다. Merge Two Sorted Lists - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 두 개의 정렬된 연결 리스트를 받아 하나의 정렬된 리스트로 합치는 문제다. 두 연결 리스트는 정렬되어 있기 때문에 단순히 두 리스트 요소들을 비교하면서 결과 리스트에 삽입하는 방식으로 구현하면 다음과 같다. class Solution: def mergeTwoLists(self, l1: ListNode, l..

Palindrome Linked List (Linked List)

LeetCode의 Palindrome Linked List 문제다. Palindrome Linked List - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 회문(Palindrome)을 구하는 문제인데 이번에는 단방향 연결 리스트를 활용하고 있다. 가장 먼저 생각해볼 수 있는 방법은 연결 리스트를 리스트로 바꿔서 거꾸로 뒤집어서 비교해보는 것이다. class Solution: def isPalindrome(self, head: ListNode) -> bool:..

Spring의 AOP(Aspect Oriented Programming)

스프링에서는 AOP(Aspect Oriented Programming)를 지원하고 있다. AOP는 관점 지향 프로그래밍 등으로 많이 번역되는데 객체 지향 프로그래밍, 서비스 지향 프로그래밍 등 프로그래밍 개발론의 일종이다. AOP에서는 프로그램을 핵심 기능과 공통 기능으로 분리하여 모듈화, 재사용성을 높이고 핵심 기능 개발에만 집중할 수 있다는 장점이 있다. AOP 프로그램을 핵심 기능과 공통 기능으로 분리한다는 것은 무엇일까? 이는 애플리케이션을 개발할 때 어느 부분에 더 집중해야 하는지, 즉 어디에 좀 더 관심사(concern)를 두어야 하는지 분리하는 것이다. 구글에서 스프링 AOP를 검색하면 지겹도록 나오는 예제지만 들어보자면 어떤 메서드의 실행 시간을 측정하는 로직을 구현해야 한다고 하자. 가장..

Running Sum of 1d Array (defaultdict)

LeetCode의 Running Sum of 1d Array 문제다. Running Sum of 1d Array - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com [1, 2, 3, 4] 같은 배열이 주어지면 첫 번째 요소까지의 합, 두 번째 요소까지의 합, 세 번째 요소까지의 합, 네 번째 요소까지의 합을 구해서 반환하는 문제다. 즉 [1, 1+2, 1+2+3, 1+2+3+4]를 계산하는 것인데 단순히 생각하면 그냥 매 요소마다 반복문으로 현재 요소까지의 합을 ..

Number of Students Unable to Eat Lunch (deque)

LeetCode의 Number of Students Unable to Eat Lunch 문제다. Number of Students Unable to Eat Lunch - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 별로 어렵지 않은 문제지만 collections 모듈의 Counter 클래스를 활용하는 풀이가 있어 적어본다. 문제는 다음과 같다. 학생들은 선호하는 샌드위치 모양이 있다. 이는 각각 0, 1로 나타낸다. 학생들을 위해 준비된 샌드위치들이 있다. 이..

Array Partition I (Pythonic way)

LeetCode의 Array Partition I 문제다. Array Partition I - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 딱히 어려울 게 없는 문제지만 책에서 아주 인상적인 풀이를 제공했기 때문에 기록해두려고 한다. 문제 자체는 다음과 같이 간단하다. 2n개의 정수 목록이 주어진다. 정수들을 n개의 한 쌍으로 분리한다. 각 쌍의 최솟값의 합이 나타낼 수 있는 최댓값을 구하라. 쉽게 말해서 [1, 3, 2, 4]가 주어질 때 (1, 3), (2..