
[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..