본문 바로가기

분류 전체보기189

[Algorithm] 아이디 생성시 규칙에 따른 변경 후 생성 알고리즘 문제의 출처는 프로그래머스 이고, 문제는 회원가입시 아이디를 7단계의 규칙에 맞게 변형시켜주는 알고리즘이다. 1. 내가 짠 코드를 보자면 일단 정규표현식을 사용하지 않아서. 코드가 지저분하나 부분이 많이 있었다. 문제를 풀면서 Debug를 사용하여 변수의 변화되는 모습을 직접 보면서 어떻게 변경되고 어느 부분에서 실수가 발생 했는지 확인할 수 있었다. 해당 내용을 정규 표현식으로 표현할 경우 코드가 많이 짧아지고 간결해진다. 기호 설명 [] 한 개의 문자 [abc] a,b,c중 하나의 문자 [^abc] a,b,c 이외 하나의 문자 [a-zA-Z] a~z, A~Z 중 하나 ? 없음 또는 한개 * 없음 또는 한개 이상 + 한개 이상 {n} 정확히 n개 {n,} 최소한 n개 {n,m} n개부터 m개 까지 ^ .. 2022. 5. 23.
[Spring] Servlet의 발전과정을 탐구해보자 - 탐구단계 1단계 : MethodCall 클래스를 통해서 ModelController의 메서드를 실행시킨 후 출력한다. - 1. HashMap 객체를 생성 ( Controller의 작업 결과를 저장할 객체 생성) - 2. 실행할 메서드를 가지고 있는 Controller 객체를 생성한 후 메서드를 실행 * 매개변수로 처리결과를 저장할 MAP을 넣어준다. - 3. mc.main(map) 의 실행결과로 "txtView1" 를 리턴해주고, 처리결과는 map에 저장된다 * call by reference로 결과값이 map에 저장된다. - 4. render(map,viewName); 를 통해서 출력해준다. * map에는 처리결과가 저장되어있고, viewName에는 출력페이지 이름이 저장되어 있다. * Scanner를 통해서 .. 2022. 5. 22.
[Spring] Private한 메서드 호출 자바의 접근 제어자 Private default protect public 같은클래스 O O O O 같은패키지 O O O 자손클래스 O O 전체 O 자바의 접근 제어자에 따르면 현재 PrivateMethodCall 클래스에서 Hello 클래스의 main() 메서드를 실행 할 수 없어야 한다. 하지만 Private한메서드를 호출할 수 있는 방법이 있다. 그방법은 다음과 같다. 1. Class 객체의 forName(String str) 를 통해서 Class 객체를 생성해준다. // Class helloClass = Class.forName(~); 2. 생성된 객체를 통해서 Hello 객체를 생성해 준다. // Hello hello2 = (Hello)helloClass.newInstance() 3. 1에서 생.. 2022. 5. 22.
[Spring] MVC 패턴 - 관심사의 분리 - 현재 getYoil 을보면 3부분으로 나뉘어 져있다 1. 입력 / 2. 작업 / 3. 출력 이각 부분을 관심사라고 한다. => 즉 해야할 작업 main() -> 3개의 관심사를 가지고 있다. ""OOP 5대 설계의 원칙 SOILD 1. SRP(단일 책임의 원칙) ==> 하나의 메서드는 하나의 책임만 가진다. 책임 == 관심사 "" 즉 main()은 관심사를 분리해야 한다. 분리 1. 관심사의 분리 2. 변하는것과 (자주)변하지 않는 것의 분리(Common code/ Uncommon code) 3. 공통 코드의 분리(중복 코드) 1) 입력 - Request.getParameter 2) 처리 3) 출력 2) 처리 3) 출력 1) 입력 - Request.getParameter 2) 처리 3) 출력 ===>.. 2022. 5. 22.
[DB/Oracle] 단일행 함수 - 문자 함수편 함수 설명 단일 행 함수 단일 행을 입력 받아 단일 행을 반환하는 함수 집계 함수 다중 행을 입력받아 단일 행을 반환하는 함수 분석 함수 다중 행을 입력받아 다중 행을 반환하는 함수 모델 함수 MODEL절에서 사용하는 함수 함수 설명 문자 함수 문자값을 조작하는 함수 숫자 함수 숫자 값을 조작하는 함수 날짜 함수 날짜 값을 조작하는 함수 변환 함수 값의 데이터 타입을 변환하는 함수 널 관련 함수 널을 조작하는 함수 비교 함수 값을 비교하는 함수 인코딩 디코딩 함수 값을 조사하거나 디코딩 하는 함수 환경 식별자 함수 인스턴스와 세션에 대한 정보를 제공하는 함수 계층 함수 계층 쿼리에서 사용하는 함수 컬렉션 함수 컬렉션 값을 조작하는 함수 xml 함수 xml 값을 조작하는 함수 JSON 함수 JSON 값을 .. 2022. 5. 21.
[DB/Oracle] CASE 표현식, 슈도 칼럼 , 바인드 변수 표현식 = 값으로 평가 될수 있는 리터럴, 연산자, SQL 함수 등의 조합이다. CASE 표현식 등가 비교식으로 deptno 의 값이 10일떄는 1을 , 20일때는 2를 그외의 숫자일 떄는 9를 나타내는 표현식이다. 검색 CASE 표현식 슈도 칼럼 : 테이블에 저장되지 않은 의사 칼럼으로, 쿼리 수행 시점에 값이 결정된다. 종류 - 일반 : ROWID, ROWNUM, ORA_ROWSCM - 계층 쿼리 : LEVEL, CONNECT_BY_ISLEAF< CONNECT)BY)ISCYCLE - 시퀀스 : CURRAL, NEXTVAL - 버전 쿼리 : VERSIONS_STARSCN, VERSIONS_STARTTIME 등... 바인드 변수(SQL PLUS 에서 가능 하며, SQL DEVELOPER 에서는 프로시저에.. 2022. 5. 21.
[DB/Oracle] SELECT 문자 리터럴(문자), 숫자 리터럴(숫자) 표현 SQL PLUS로 접속시 COL의 포맷을 정하여 표현 할 수 있다. 날짜 표기방법은 NLS 파라미터 설정에 따라 출력 포맷이 달라진다. 변경전 표현방법 변경후 표현방법 Oracle에서의 NULL 값은 빈문자 '' 와 동일하게 처리된다. 날짜의 산술 연산 일,월 * 날짜의 일 계산은 숫자로 + ( ) 해주면된다. * 월계산은 ADD_MONTHS( DATE, 숫자)를 통해서 수행되며, DATE 날짜에서 숫자만큼 증가 된다. 날짜간의 계산은 DATE - DATE 형식으로 진행하면된다. - 계산된 결과는 일로 표현된다. 2022. 5. 21.
[Algorithm] 로또 최대 등수 및 최저 등수 구하기 프로그래머스 알고리즘 테스트 문제 중 [초급] 아래는 내가 문제를 풀이한 방법이다. 내가 풀이한 다른사람풀이와 비슷한게 있었는데 그 사람의 풀이는 for문을 돌릴때 향상된 for문을 돌렸다 향상된 FOR 문을 사용하니 횟수를 따로 지정해 주지 않고 for문을 돌리니 훨씬 간결한 느낌이 들었다. 코드의 실행 시간도 거의 차이가 없지만 1(ms) 차이 정도 났다 2022. 5. 21.
[Algorithm/MAP] MAP의 표현방법 MAP 안의 요소를 표현하는 방법에 대해서 알아보자 * map의 요소를 한번에 확인하는 방법 1. map의 KEY값을 .keySet() 함수로 Set 형태로 RETRUN 받을수 있다. iterator를통해서 값을 하나씩 꺼내서 .get(Key keyt) 함수를 통해서 Value 값을 리턴 받을수 있다. 2. map.entrySet() 함수를 통해서 Set 값을 리턴 받을수 있는데 이를 향상된 FOR문을 통해서 for( Entry entrySet : map.entrySet() ) entry는 Key값과 Value 값을 갖는 Set을 얻으며 , getKey(), getValue() 를 통해서 요소를 확인 할 수 있다. 3. Map을 values() 함수를 통해서 Collection 객체로 형변환이 가능하며 .. 2022. 5. 21.
[Algorithm] Map.getOrDefault 프로그래머스를 통해서 신고자 누적 알고리즘을 공부하면서 알게된 매서드이다. Map의 메서드중 하나이며 매개변수로 ( Map의 key값과, Default 값이 들어간다.) return 값은 Set 값이다. 아래를 보면 name 이라는 String[] 이있고 이름을 key 값으로 map에 넣고 있다. 이때 만약 key값이 이미 들어가있으면 해당 value 값을 1씩 증가 시켜주는 for문을 돌리고 있다. 이때 map.getOrDefault(name[i], 0)+1 을 통해서 해당 key값이 이미 들어가있다면 해당 key값의 value를 가지고 나오게 되고,, key 값이 map에 존재하지 않다면 0이 return되며 +1 하여 1이 출력되게 된다. 처음에 이 메서드가 있는줄 모르고 replace를 통해서 해.. 2022. 5. 20.