그냥 기초를 짚고 넘어가자는 의미에서 아주 간단한, 문자열을 뒤집어서 리턴하는 함수를 작성해보려고 한다. 1) 투 포인터를 이용 from typing import List def reverseString(s: List[str]): left = 0 right = len(s) - 1 temp = 0 while left < right: temp = s[left] s[left] = s[right] s[right] = temp left += 1 right -= 1 if __name__ == '__main__': s = ["1", "2", "3", "4"] reverseString(s) print(s) 혹은 temp를 사용하지 않고도 다음과 같이 작성할 수 있다. (파이썬은 진짜 미친 거 같다) from typin..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/uLQq9/btq30EznJY5/eBTjJL7gIKWdGWDtUid2bK/img.png)
문자열 조작에 있어서 아주 편리하게 사용할 수 있는 정규표현식에 대하여 알아보자. 정규표현식은 반드시 typing의 re 모듈을 import 해야 사용할 수 있다. 1. 메타 문자 메타 문자는 보통 어떤 문자열 안에 와일드 문자로써 사용되는 경우가 많기 때문에 백슬레시와 같은 문자를 사용할 때는 반드시 백슬레시를 한번 더 사용하여 이스케이프 처리를 해야한다. 1) [ ] [ ] 내부 문자열과 매치되는 것 import re test = re.compile('[abc]') print(test.findall('a abc ccc aaa bbb')) >>> ['a', 'a', 'b', 'c', 'c', 'c', 'c', 'a', 'a', 'a', 'b', 'b', 'b'] 또한 [] 를 이용하여 특정 패턴을 모두..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/bKvSIC/btq3UFsx1LP/mbHyzDZunkm4xU6M9m1G4K/img.png)
파이썬 문제 풀이 첫 포스팅이다. 파이썬 같은 인터프리터 언어는 알고림즘의 처리 속도가 Java나 C 보다 느린 것이 단점이지만, 이를 보완하고도 남을만큼 코드를 간단하게 작성할 수 있다는 장점이 있다. Java 프로그래머스 연습 문제 풀이가 얼마 안남았긴 한데, 남은 문제들의 난이도가 상당해서...파이썬과 함께 기초 알고리즘을 먼저 제대로 짚고 넘어가는 것이 더 좋을 거 같다고 생각했다. 그럼 가장 기초적이고 빈번하게 나오는 "문자열 조작" 부터 차례차례 문제를 풀어나가도록 하겠다. 팰린드롬은 앞뒤가 똑같은 단어 또는 문장을 말하며, 주어진 문자열이 팰린드롬인지 아닌지 확인하면 되는 문제이다. 앞, 뒤를 구분하지 않으며, 영문자와 숫자만을 대상으로 한다. 알고리즘의 속도에 따라 3가지 방법으로 해당 문..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/eEpvmE/btq3Ix207xQ/L7fxNCaR0OcVB3uCbvJkq0/img.png)
지금까지 공부한 JSP, Servlet, DAO, DTO와 약간의 Javascript를 섞어서 모두 활용해보는 예제를 진행하려고 한다. 간단하게 구현해볼 기능은 다음과 같다. 1. 로그인 페이지에서 로그인, 회원가입 페이지로 이동 가능 2. 회원 가입 페이지에서 아이디의 중복을 확인하고, 비밀번호 & 비밀번호 확인이 일치하는 지 확인하여 회원 가입 진행 3. 회원 가입을 완료하면, 로그인 페이지에 방금 회원가입한 id가 입력된 상태로 이동된다. 4. 로그인을 수행하여 메인 페이지로 진입 가능 사용할 DB 테이블 모든 DB 조작 메서드는 DAO가 가지고 있으며, 위 테이블의 모든 속성을 변수로 갖는 DTO를 단 하나 사용하여 구성하였다. 각각의 기능을 수행할 Servlet의 구성 1. IdCheckServ..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/UkQgz/btq3JSRDYwF/vAycSWks33vlqWMpbihkwk/img.png)
이전 포스팅에서 Servlet의 간단한 개념과, DAO & DTO를 각각 어떻게 작성하는 지 알아봤으니, 이제 간단한 예제를 풀어 활용해보자. 예제는 이전에 구성했던 예제 코드를 각 기능별로, 1. View = JSP 2. Controller = Servlet 3. DataBase = DAO & DTO 위와 같이 나누어 좀 더 체계적으로 구현된 웹 프로젝트로 재구성하여 작성하였다. 우선, 구현할 기능과 데이터의 흐름은 다음과 같다. 1. UserInfoInitForm.jsp: 해당 페이지는 다음과 같은 기능을 수행한다. 1) 이름을 입력 받아 동일한 이름의 회원 정보 검색 (=> UserInfoViewer.jsp) 2) 회원가입 버튼을 눌러 회원가입 페이지로 이동 (=> UserInfoJoinForm.j..
DTO? DTO는 직전 포스팅에서도 언급했듯, 데이터베이스 레코드의 데이터를 맵핑하여 인스턴스로 사용하기 위해 존재하는 객체이다. 즉, 폼 필드의 이름을 그대로 가지고 있는 자바빈 객체를 맵핑하여 JSP가 사용할 수 있게끔 할 수 있도록 하는 객체. 이러한 객체를 DTO(Data Tranfer Object) 혹은 VO(Value Object) 패턴이라고 한다. DTO를 생성할 시 주의 사항: 1. JSP에서 사용하는 파라미터의 속성명 2. DTO 클래스의 멤버 변수명 3. 데이터베이스의 테이블 속성명 위 3가지가 모두 동일한 이름이여야 비즈니스 계층에서 쉽게 꺼내 사용할 수 있다. ◎DTO 객체 예시 코드 package com.choonham.dto; public class GoodsDTO { priva..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/zErtU/btq3xPQpkgX/KWkYgya52exkOzcOx1qm8k/img.png)
JSP나 Servlet을 사용하여 프로젝트를 진행할 때, 모든 객체를 전부 JSP에서 선언하여 사용하면 데이터를 따라가기 힘들 뿐더러 비효율적이다. 그래서 주로 사용하는 방식이 Java source 폴더에 원하는 데이터를 가지고 있는 객체를 생성하여 이를 모아두고, 데이터베이스에서 가져온 정보를 해당 객체에 저장하여 사용하는 방식이다. 이 때, DB 에서 꺼내온 데이터를 가질 객체들의 집합을 DTO(Data Transfer Object)라고 한다. 이번 포스팅에서는 이 DTO 를 어떻게 활용할 수 있는 지 알아보려고 한다. 간단하게, 저장된 정보를 가지고 있다가, 검색 내용이 들어오면 해당하는 데이터를 목록으로 내보내고, 목록을 클릭하면 상세 정보가 보이는 정도의 기능을 가지고 있는 도서 검색을 구현하여..
진짜 매번 LIKE를 사용할 때마다, 부적합한 열인덱스 오류가 떠서 굉장히 시간을 많이 갈게 되는데... 이번 기회에 안 헤매도록 그냥 적어두려고 한다. 우선 SQL문 내에 LIKE를 사용하는 PreparedStatement를 사용할 때는 LIKE '%?%' 와 같은 방식으로 작성하면 무조건 부적합한 열 인덱스 오류가 뜨는 거 같다. 그러므로 쿼리를 다음과 같이 수정해야 한다.. like '%' || ? || '%' 잘 알아두도록 하자... (내 시간...)
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/bIEnyw/btq3q7wncPO/YgjZwz2YqTchrU9mkVCVSk/img.png)
JSP(사용자) -> Servlet(서버) 간 데이터 전송은 이전에 다뤘던 JSP -> JSP 간 데이터 통신과 별반 다를 게 없다. form태그의 action속성 경로가 맵핑해놓은 url 주소 값이라는 것만 주의하면 거의 동일하다고 봐도 된다. ◎MethodServlet.java package unit02; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; ..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/CVIV0/btq3r1P4VLy/vaRDICp31cY8U7Htww8Bx1/img.png)
기초를 다루며 사용했던 doGet()은 서버에 요청이 들어올 때마다 호출되는 함수지만, 이번에 알아볼 init()과 destroy()는 각각 서버가 처음 실행되었을때, 서버가 종료되었을 때 사용되는 메서드이다. package unit01; import java.io.IOException; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSe..
- redux
- 이탈리안 레스토랑
- redux-thunk
- 맛집
- await
- Promise
- react-native
- 정보보안기사 #실기 #정리
- Async
- react
- javascript
- 파니노구스토
- 인천 구월동 이탈리안 맛집
- AsyncStorage
- 인천 구월동 맛집
- Total
- Today
- Yesterday