본문 바로가기

나는 오늘,

(371)
[Spring] 스프링 프레임워크로 만드는 게시판2 계층별 - 비즈니스 계층 Service 객체를 만든다. 1. 요구사항을 메소드로 정리해서 Service 인터페이스를 정의하고 2. ServiceImpl.java 에서 구현 객체를 만들어준다. 비즈니스 계층의 역할 컨트롤러와 DAO 사이의 접착제 역할을 한다. 1. 각 회사마다 다른 로직이나 규칙을 데이터베이스에 무관하게 처리할 수 있는 완충 영역 2. 컨트롤러와 같은 외부 호출이 영속 계층에 종속적인 상황을 막아준다. 3. 컨트롤러로 로직이 집중되는 것을 막는다. (트랜잭션 처리, 예외처리 등) 비즈니스 계층은 로직에 필요한 데이터베이스 관련 객체들을 모아서 자신이 원하는 일을 처리하는 용도이다. root-context.xml 수정 service package를 Spring container가 인식할 수..
[Spring] 스프링 프레임워크로 만드는 게시판1 게시판은 CRUD를 연습하기에 좋은 구성을 가지고 있다. 게시물의 등록, 수정, 삭제,조회 페이징 처리 검색 처리 등록(create) 구현 목록 1. 등록을 할 수 있는 화면을 구성 (form) 2. 데이터베이스 연결 3. 등록된 결과를 확인. 목록페이지로 이동하므로, 전체 목록 기능 구현 4. 상세페이지 보기 5. 수정 작업 페이지 이동 6. 페이지 삭제 org.coc.controller -> 스프링 MVC의 컨트롤러 패키지 org.coc.dao -> MyBatis의 DAO 패키지 org.coc.domain -> VO가 사용하는 패키지 org.coc.service -> 서비스 인터페이스와 구현 클래스 패키지 resource.mapper -> MyBatis Mapper xml 위치 테이블 생성 creat..
[SWEA] 4613. 러시아 국기 같은 깃발 문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWQl9TIK8qoDFAXj&categoryId=AWQl9TIK8qoDFAXj&categoryType=CODE SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 * 조합을 사용해서 백트래킹을 하며 모든 경우를 다 해본다. * 첫 행과 마지막 행은 흰색 / 빨간색으로 고정된다. 2행부터 n-1 행까지의 조합을 구한다. * 조합을 구할 때 파란색이 반드시 포함되어야 한다. * W = 1 B = 2 R = 3 으로 치환을 했다. 색을 칠 할 때 이전의 행에 칠해진 색과 ..
[SWEA] 1824. 혁진이의 프로그램 검증 문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV4yLUiKDUoDFAUx&categoryId=AV4yLUiKDUoDFAUx&categoryType=CODE SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 * dfs를 이용해서 탐색을 진행한다. * @를 만나면 flag 를 True로 만들고 탐색을 종료한다. * 갔던 곳을 또 가지 않도록 방문 표시를 한다. 하지만, 프로그램 상 메모리에 있는 값에 따라 다른 처리를 하는 연산이 있기 때문에 visited 배열에 방문했던 당시의 메모리값(buf)을 저장하고, ?..
[모의 SW 역량테스트] 차량 정비소 문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV6c6bgaIuoDFAXy SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 * 시간 0부터 들어온 고객을 접수 창구에 배정한다. 이 때, 접수 창구가 꽉 차서 배정되지 못한 고객은 대기 배열에 넣는다. (waitA) * USER 완료하면 정비 창구 대기열에 넣는다. 3) inputWaitingB() : 정비 창구 대기열에 잇는 사람들을 정비 창구에 넣는다. *** 정비 창구가 꽉 차서 들어가지 못한 사람들은 wait를 1씩 증가시켜준다. (wait가 클 수록 더..
[BOJ] 14226. 이모티콘 * BFS로 완전 탐색한다. * 큐에 모든 연산을 한 결과(now) 와 clipboard에 저장된 값(buffer), 연산 횟수(cnt)를 저장해나가면서 now == s가 되면 그 때의 cnt가 최소값이 된다. * now의 값이 변화되는 연산을 실행할 때 (이모티콘 삭제, 버퍼에 있는 값 붙여넣기) 범위를 제한해야 한다. (제한하지 않으면 오버플로우 발생 가능) * bfs의 기본인 방문 체크를 하면서 탐색한다. #include #include #include #define INF 987654321 using namespace std; //boj 이모티콘 https://www.acmicpc.net/problem/14226 typedef pair pp; typedef pair ipp; bool dp[1001..
[BOJ] 1976. 여행 가자 * 서로소 집합(union find)를 이용한다. * 연결되어 있는 도시들은 양방향으로 연결되고, 여행 경로는 중복이 가능하기 때문에(=최단경로가 아님) m개의 도시들이 같은 집합에 속해있는지만 확인하면 된다. #include #include #include #include #define MAXX 3001 using namespace std; // BOJ 여행가자 https://www.acmicpc.net/problem/1976 int n, m; int parent[MAXX]; int find(int a) { if (parent[a] == -1) return a; return find(parent[a]); } void unionFind(int a, int b) { int pa = find(a); int ..
이메일 만들기 import collections company = input() input = list(map(str,input().split(', '))); res=[] nameDic={} for value in input: name = list(map(str, value.split())); last = name[len(name)-1].replace('-','') lastfirst = last.lower() + name[0][0].lower() cnt = int(nameDic.get(lastfirst,'0')) finalName=lastfirst if cnt > 0 : finalName = finalName + str(cnt+1) nameDic[lastfirst] = cnt+1 tmp=[] tmp.append(fin..