본문 바로가기

전체 글

(23)
Toby's Spring - Chap 2 - Test ※ 해당 내용은 '토비의 스프링 3.1'을 정리한 내용입니다. 스프링이 개발자에게 제공하는 가장 중요한 가치 2개를 뽑자면 바로 객체지향과 테스트일 것입니다. 그 중 테스트란 개발자가 예상하고 의도했던 대로 코드가 정확히 동작하는지를 확인하기 위한 작업입니다. 웹을 개발하는 개발자들 중 대부분은 웹 화면을 통해서 테스트를 진행 할 것입니다. DB 콜을 위한 DAO 클래스를 확인하기 위해서 DAO 클래스를 개발하고 서비스 로직, MVC 프레젠테이션 계층까지 개발후에 로컬서버에서 웹을 띄우고 input값을 입력 후 버튼을 눌러 잘 동작하는지 확인합니다. 이 방법은 가장 간단하지만 클래스 하나를 확인하기 위해 작성해야 할 부가적인 코드가 너무 많습니다. 그리고 DAO클래스를 제외하고도 에러가 날 부분이 많이 ..
BOJ 7562 나이트의 이동 www.acmicpc.net/problem/7562 7562번: 나이트의 이동 문제 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 www.acmicpc.net 접근 1. 나이트가 갈 수 있는 곳을 bfs로 돌면서 목표 지점에 도착하면 이동 횟수 최솟값 반환 풀이 1. 테스트 케이스 마다 판의 크기, 시작 지점, 목표 지점을 입력받는다. 2. bfs 메소드를 호출한다. 3. dy, dx에 나이트가 이동할 수 있는 경우의 수를 지정한다. 4. 시작지점을 큐에 넣고 나이트가 이동할 수 있는 곳을 bfs로 순회한다. import java.io.*; import java.ut..
BOJ 10816번 숫자 카드 2 www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 접근 1. 일반적인 이분탐색으로 접근 - 시간초과 2. 해시맵을 사용하여 접근 - 통과 3. 이분탐색 중 상/하한선 (lower bound, upper bound) 발견 ! 이론보기 jackpot53.tistory.com/33 이진탐색-상/하한선((lower bound,upper bound) 주어진 자료에서 중복되지 않은 값이 주어질 때 그 데이터내에 특정 값이 존재하는지 검색..
BOJ 9237번 이장님 초대 www.acmicpc.net/problem/9237 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 접근 1. CPU 스케쥴링 기법 중 SRT 와 유사한 문제이다. CPU 스케쥴링 hyunah030.tistory.com/4 풀이 1. 나무들을 내림차순으로 정렬한다. 2. 현재 나무를 키우는데 필요한 시간은 시간(1일) + 키우는데 필요한 시간(trees[i]) + 현재 날짜(index) 이다. 3. for문을 돌면서 키우는데 걸리는 시간 중 최대값을 찾는다. 4. 마지막으로 현재 ..
BOJ 1654번 랜선 자르기 www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 접근 1. 가지고 있는 랜선을 잘라서 N개만큼 만들어야 한다. 2. 1부터 가지고 있는 랜선의 최대 길이 중 답을 찾아야 한다. 3. 이분탐색 고고 풀이 1. 랜선의 길이를 입력받을 때 최대 길이 저장 2. mid 값을 구하고 그 길이만큼 짤랏을 때 나오는 랜선 갯수 확인 3. N보다 크면 임시 답으로 저장 후 left = mid + 1 (랜선을 더 길게 짤라본다) 4. N보다 작으..
BOJ 1439번 뒤집기 www.acmicpc.net/problem/1439 접근 1. 입력받은 문자열에서 0과 1중 연속된 부분이 적은 쪽이 답이다. 풀이 1. pre 변수에 이전 값 저장 2. pre와 현재 문자가 다를 경우 현재 문자 변수(zero 또는 one) 증가 3. zero, one 중 최솟값 출력 public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String s = br.readLine(); char[] charArray = s.toCharArray(); int zero = 0, one = 0; char pre; if(charArr..
BOJ 15649번 N과 M (1) 문제 www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 접근 | 1. 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 2. swap방식의 순열 알고리즘을 사용하면 사전식 출력 조건에 벗어남 3. DFS 방식의 순열 알고리즘 선택 접근 풀이 1. 1부터 N까지 숫자를 하나씩 고르고 순열 함수 재귀 호출 2. checked 배열로 현재 숫자를 뽑았는지 체크 3. 현재 뽑은 숫자 카운트를 인덱스로 사용하여 arr 배열에 저장 4. 카운트가 M이 되면 뽑은..