전체 글

전체 글

    백준 1932. 정수 삼각형 (JAVA)

    백준 1932. 정수 삼각형 (JAVA)

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int[][] arr; static int[][] dp; static int n; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; n = Integer.parseInt(br.readLine()); arr = n..

    백준 19947. 투자의 귀재 배주형 (JAVA) (DP)

    백준 19947. 투자의 귀재 배주형 (JAVA) (DP)

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int[] dp ; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int H = Integer.parseInt(st.nextToken()); ..

    2.2 UserDaoTest 개선

    2.2 UserDaoTest 개선

    학습 목표 UserDaoTest의 두 가지 문제점을 개선해보자. 테스트 검증의 자동화 첫 번째 문제점인 테스트 결과의 검증 부분을 코드로 만들어보자. 이 테스트를 통해 확인하고 싶은 사항은 add()로 등록한 사용자 정보와 get()으로 가져온 사용자 정보가 일치하는가이다. 테스트는 성공과 실패라는 두 가지 결과를 보여준다. 테스트에 실패했을 경우 "테스트 실패"이라는 메시지를 출력하고, 성공했을 경우 "테스트 성공"이라는 메시지를 출력하도록 하자. 테스트 결과가 우리가 원하는 대로 잘 나온 것을 확인할 수 있다. 하지만 UserDao 클래스에서 get() 메소드의 user.setName(rs.getNString("name")); 이 부분을 주석 처리하고 테스트를 진행한다면 아래와 같은 테스트 실패 메시..

    백준 11047. 동전 0 (JAVA)

    백준 11047. 동전 0 (JAVA)

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int N = Integer.parseInt(st.nextToken()); int K = Integer.pa..

    2-1 UserDaoTest 다시보기

    2-1 UserDaoTest 다시보기

    학습 목표 테스트란 무엇이며, 그 가치와 장점, 활용 전략, 스프링과의 관계를 살펴보자. 테스트의 유용성 1장에서 만든 UserDao가 기대했던 대로 동작하는지 확인하기 위해 간단한 테스트 코드를 만들었다. main() 메소드를 이용해 UserDao 오브젝트의 add()와 get() 메소드를 호출해서 그 값을 출력해 눈으로 확인했다. 그 매 단계에서 확인한 덕분에 초난감 DAO 코드를 개선했고 스프링을 적용해서 동작하게 만들 수도 있었다. 테스트란 결국 내가 예상하고 의도했던 대로 코드가 정확히 동작하는지 확인해서, 만든 코드를 확신할 수 있게 해주는 작업이다. 원하는 결과가 나오지 않으면 디버깅 과정을 거쳐서 최종적으로 모든 결함이 제거됐다는 확신을 얻을 수 있다. UserDaoTest의 특징 1장에서..

    1장 오브젝트와 의존관계

    1장 오브젝트와 의존관계

    - DAO(Data Access Object) : DB를 사용해 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 오브젝트를 말한다. - 자바 빈(JavaBean) : 두 가지 관례에 따라 만들어진 오브젝트를 가리킨다. 간단히 빈이라고 부르기도 한다. ○ 디폴트 생성자 : 자바 빈은 파라미터가 없는 디폴트 생성자를 갖고 있어야 한다. ○ 프로퍼티 : 자바 빈이 노출하는 이름을 가진 속성을 프로퍼티라고 한다. 프로퍼티는 수정자 메서드(setter)와 접근자 메서드(getter)를 이용해 수정 또는 조회할 수 있다. DAO에서 JDBC를 이용하는 작업의 순서는 다음과 같다. 1. DB 연결을 위한 Connection을 가져온다. 2. SQL을 담을 Statement( 또는 Prestatement)를 만든다..

    백준 15649. N과 M(1)(JAVA)

    백준 15649. N과 M(1)(JAVA)

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int[] arr; static boolean[] visit; static StringBuilder sb = new StringBuilder(); public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new Str..

    백준 9461. 파도반 수열(JAVA)

    백준 9461. 파도반 수열(JAVA)

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { static Long[] dp = new Long[101]; public static void main(String[] arge) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); int test_case = Integer.parseInt(br.readLine()); dp[1] = 1L; dp[2] = 1L; dp[3..

    백준 1003. 피보나치 함수(JAVA)

    백준 1003. 피보나치 함수(JAVA)

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { static Integer[][] dp = new Integer[41][2]; public static void main(String[] arge) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int test_case = Integer.parseInt(br.readLine()); dp[0][0] = 1; dp[0][1] = 0; dp[1][0] = 0; dp[1][1] = 1; fo..

    시간 복잡도(Time Complexity)

    시간 복잡도(Time Complexity)

    최근에 정보처리기사 필기를 준비하면서 정렬에 관한 문제가 나올 때마다 빠짐 없이 나오는 것이 있는데 바로 '시간 복잡도'이다. 필기 준비할 때는 답을 외우는 게 빠르기 때문에 지나쳤지만 최근에 정렬에 관한 알고리즘을 공부하면서 시간 복잡도에 대해 알아보고 싶어서 정리를 시작하게 됐다. 시간 복잡도란? -> 문제를 해결하는데 걸리는 시간과 입력함수의 관계를 나타내는 것이다. 이름에서부터 그 의미가 느껴지지만 면접에서 물어볼 날이 생기지 않을까라는 기대를 가지고 사전적 정의를 써봤다. 좀 더 쉽게 말하면 문제 해결을 하는데 시간이 얼마나 걸려?를 나타난 것이라고 보면 된다. 시간이 오래걸리면 복잡하다는 것을 다 알다시피 시간 복잡도가 크면 느린 알고리즘이고 시간 복잡도가 작으면 빠른 알고리즘이다. 그리고 시..