[Spring] DI - XML 기반 설정
2022. 4. 24. 17:34
프로그래밍/Spring
Spring Container 핵심 기능 자바 객체(bean)의 라이프 사이클 관리 Dependency Injection(DI) 종류 BeanFactory interface의 구현체 Bean 객체를 생성하고 DI를 실행하는 기본적인 기능 제공 ApplicationContext interface 및 그 sub-interface의 구현체 Anntation 기반 설정, Java code 기반 설정 다양한 부가 기능 추가 제공 Spring Container의 bean 생성 및 관리 BeanFactory interface org.springframework.beans.factory.BeanFactory Spring container에 대한 기본적인 API 정의 getBean(String name, Class re..
[백준] 2579 계단 오르기 - 파이썬
2022. 4. 24. 14:02
알고리즘
2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net * 무조건 첫 번째 계단을 밟지 않아도 됨 import sys n = int(input()) s = [int(sys.stdin.readline()) for _ in range(n)] dp = [] for i in range(2): dp.append(sum(s[:i + 1])) if n >= 3: dp.append(max(s[0] + s[2], s[1] + s[2])) for i in range(3, n): dp.append(max(dp[i - 3] + s[i - 1] + s..
[Spring] Spring MVC(2)
2022. 4. 22. 05:04
프로그래밍/Spring
MVC Pattern Model: Business logic 실행, 데이터 처리, 결과 데이터 생성 View: User interface 생성(presentation logic 실행), 출력 화면 생성 Controller: Request 처리, request/response 데이터 전달 Spring MVC 주요 구성요소 DispatcherServlet: Client의 요청(request)을 받아 Contoller에게 전달. Controller의 처리 결과를 View에 전달하여 응답(response)을 생성하도록 함(front controller) HandlerMapping: Client의 요청 URL을 어떤 Controller가 처리할지를 결정 HandlerAdapter: DispatcherServlet..
[백준] 1003 피보나치 함수 - 파이썬
2022. 4. 21. 01:38
알고리즘
1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 초반에는 그냥 단순하게 메모 사용하면 되는 게 아닌가 했는데 생각보다 삽질을 좀 많이 했다. 처음에는 n이 0이거나 1일 때 cnt_0과 cnt_1이라는 변수를 만들어서 하나씩 값을 더하며 구하려고 했는데 메모를 사용하면 n이 몇이 되든 저 두 변수의 값은 1과 2로 고정이 된다. 그래서 어떻게 해야 할까 하다가 n이 6일 경우 0과 1이 각각 몇 번 나오는지 보려고 그림을 그려봤다. 숫자 옆에 배열은 각각 0과 1의 횟수이다. 그런데 저 숫자들을 보니 1, 1, 2, 3, 5, 8.. 피보나치 수열이었다. 사실 중간에 삽질이 더 생략되어 있긴 하지만 피보나..
[React] 이벤트 핸들링
2022. 4. 19. 10:48
프로그래밍/React
이벤트 (Event) 사용자가 웹 브라우저에서 DOM 요소들과 상호 작용하는 것 onmouseover, onclick 이벤트 등 import React, { useState } from 'react'; const Say = () => { const [message, setMessage] = useState(''); const onClickEnter = () => setMessage('안녕하세요!'); const onClickLeave = () => setMessage('안녕히 가세요!'); const [color, setColor] = useState('black'); return ( 입장 퇴장 ... 이벤트를 사용할 때 주의 사항 1. 이벤트 이름은 카멜 표기법으로 작성 HTML의 onclick -> ..
[Spring] Spring MVC(1)
2022. 4. 17. 11:17
프로그래밍/Spring
스프링을 사용하는 이유 스프링이 지원하는 웹 MVC 프레임워크 때문이다. 스프링 MVC의 설정 방법만 익혀두면 웹 개발에 필요한 다양한 기능을 구현할 수 있게 된다. 프로젝트 생성 웹 어플리케이션을 개발을 위한 메이븐/그레이들 프로젝트는 웹을 위한 디렉토리 구조가 추가된다. src/main/java src/main/webapp src/main/webapp/WEB-INF src/main/webapp/WEB-INF/view webapp은 HTML, CSS, JS, JSP 등 웹 어플리케이션을 구현하는데 필요한 코드가 위치한다. WEB-INF에는 web.xml 파일이 위치한다. 스프링 MVC 설정 스프링 MVC를 실행하는데 필요한 최소 설정은 다음과 같다. 스프링 MVC의 주요 설정(HandlerMapping..
[백준] 18870 좌표 압축 - 파이썬
2022. 4. 11. 20:42
알고리즘
18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net 시간 초과 import sys n = int(input()) lst = list(map(int, sys.stdin.readline().split())) tmp = set(lst) result = [0] * n for i in range(n): for t in tmp: if t < lst[i]: result[i] += 1 print(result[i], end=" ") 여기서는 어차피 한 줄로 받으니까 sys.stdi..
[JS] 이벤트 버블링 / 이벤트 위임
2022. 4. 11. 01:50
프로그래밍/JavaScript
window 브라우저 전체를 담고 있는 객체 document는 웹 페이지 전체를 의미 요소를 가져오는 방법 중 가장 대표적으로 쓰이는 것 document.querySelector()의 첫 번째 인자 안에는 css 선택자들을 넣어줌 이벤트를 감지하려면 리스너를 달아줌 addEventListener('click', () => {}) 첫 번째 인자는 어떤 이벤트가 발생했는지를 문자열로 두 번째 인자는 콜백 함수 요소 생성 document.createElement("button") 첫 번째 인자는 생성하고자 하는 태그의 이름을 문자열로 span.innerText = "X"; li.appendChild(span) button.addEventListner()도 가능 button.onclick = () => {} l..
코드 리뷰의 규칙
2022. 4. 10. 22:13
기타
들어가기 전 리뷰어: 다른 사람이 작성한 코드를 리뷰하는 사람들 리뷰이: 본인이 작성한 코드를 다른 사람들에게 리뷰받는 사람 코드 리뷰의 7가지 규칙 1. 왜 개선이 필요한지 이유를 구체적으로 설명하기 코드 개선의 필요성을 느끼고 리뷰를 남긴다면 충분한 이유가 뒷받침되어야 함 주관적이거나 추상적이라면 리뷰이가 혼란을 느낄 수 있음 const data = [ ['데이터베이스', 'A', 3], ['교양영어', 'B+', 1], ['철학', 'A', 2] ]; 변수명만 봐서는 어떤 의도를 가진 변수인지 파악하기가 힘들고, 데이터가 확장되거나 비슷한 자료구조가 추가될 때 문제가 야기될 수 있음 따라서 리뷰어는 구체적이고 의도를 가진 변수명으로 변경하고자 함 안 좋은 리뷰 data 변수 말고 다른 변수명으로 하..
[백준] 1181 단어 정렬 - 파이썬
2022. 4. 9. 04:01
알고리즘
1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net import sys n = int(input()) word = [sys.stdin.readline().strip() for _ in range(n)] word = list(set(word)) word.sort(key=len) length = 1 tmp, result = [], [] for w in word: if len(w) != length: length = len(w) tmp.sort() result += tmp tmp = [w] else: tmp..