본문 바로가기
반응형

전체 글24

분할정복을 이용한 거듭제곱 계산 알고리즘 분할정복을 이용해서 거듭제곱을 계산하면 연산횟수 감소를 통해서 시간 기하급수적으로 시간을 단축시킬 수 있습니다. 아이디어는 다음과 같습니다. 점화식 및 코드 C의 n승은 지수법칙에 의해서 다음과 같은 점화식으로 바꿀 수 있습니다. 위는 n이 짝수일 때의, 아래는 n이 홀수일 때 점화식입니다. 위의 점화식을 파이썬 코드로 표현하면 다음과 같습니다. def divideConquer(base, exp): if exp == 0: # 지수가 0인 경우 return 1 if exp % 2: half = divideConquer(base, (exp - 1) // 2) result = (half * half * base) else: half = divideConquer(base, exp // 2) result = (h.. 2023. 6. 6.
동적 프로그래밍(Dynamic Programming) 동적 프로그래밍은 메모리에 이미 계산된 결과를 저장하여 효율성을 향상하는 기법입니다. 이게 왜 Dynamic과 어떤 관계가 있길래 dynamic이라는 이름이 붙었냐면.. 그냥 이름이 멋있어서 붙였다고 합니다(...) 조건 동적 프로그래밍을 사용하기 위해서는 최적 부분 구조와 중복되는 부분 문제라는 2가지 조건을 만족시켜야 합니다. 최적 부분 구조: 큰 문제를 작은 문제로 나눌 수 있으며, 작은 문제의 정답을 모아서 큰 문제 해결 가능 중복되는 부분 문제: 동일한 작은 문제를 반복적으로 해결해야 함. 이 두가지 조건을 만족시키는 가장 대표적인 예시가 바로 피보나치입니다. 메모이제이션 DP는 메모이제이션이라는 기법을 사용합니다. 메모라는 워딩에서 알 수 있듯이 한 번 계산한 결과를 메모리에 저장해 두었다가 .. 2023. 6. 6.
주니어 자바 개발자를 위한 100가지 질문(11~15번) 이번에는 11번부터 15번까지 공부를 했습니다. 이전에 포스팅했던 1번~10번에 대한 링크는 접은 글에 걸어두겠습니다. 더보기 2023.05.30 - [자바/주니어 개발자를 위한 질문 100가지] - 주니어 자바 개발자를 위한 100가지 질문(1~5번) 주니어 자바 개발자를 위한 100가지 질문(1~5번) 오늘부터 20일동안 주니어 자바 개발자를 위한 100가지 질문이라는 컨텐츠로 포스팅을 해볼까 합니다. 물론 다른분들께 도움이 되면 더욱 좋겠지만, 그보다 우선적으로 저도 작성하면서 공부하 dev-yi.tistory.com 2023.06.03 - [자바/주니어 개발자를 위한 질문 100가지] - 주니어 자바 개발자를 위한 100가지 질문(6~10번) 주니어 자바 개발자를 위한 100가지 질문(6~10번).. 2023. 6. 5.
주니어 자바 개발자를 위한 100가지 질문(6~10번) 지난번에 이어서 오늘은 6~10번을 공부해서 정리하였습니다. 접은 글을 열어보시면 지난번에 작성한 글을 확인하실 수 있습니다. 더보기 2023.05.30 - [자바] - 주니어 자바 개발자를 위한 100가지 질문(1~5번) 주니어 자바 개발자를 위한 100가지 질문(1~5번) 오늘부터 20일동안 주니어 자바 개발자를 위한 100가지 질문이라는 컨텐츠로 포스팅을 해볼까 합니다. 물론 다른분들께 도움이 되면 더욱 좋겠지만, 그보다 우선적으로 저도 작성하면서 공부하 dev-yi.tistory.com 주니어 자바 개발자를 위한 질문 6~10번 6. String은 기본 데이터 타입인가요?(Is String the fundamental data Type?) String은 기본 데이터 타입은 아니고, 문자열을 나타내.. 2023. 6. 3.
주니어 자바 개발자를 위한 100가지 질문(1~5번) 오늘부터 20일동안 주니어 자바 개발자를 위한 100가지 질문이라는 컨텐츠로 포스팅을 해볼까 합니다. 물론 다른분들께 도움이 되면 더욱 좋겠지만, 그보다 우선적으로 저도 작성하면서 공부하고, 나중에도 언제든지 다시 찾아보기 위해서 작성하는 글입니다. 틀린 내용이 있다면 댓글 달아주시면 감사하겠습니다. 참고로, 이 컨텐츠에서 가져올 질문들은 여기에서 가져왔습니다. 주니어 자바 개발자를 위한 질문 1~5번 1. JDK와 JRE의 차이점 JDK는 Java Development Kit의 줄임말로, 이름대로 자바를 이용해서 어플리케이션을 개발하기 위한 도구입니다. JDK에는 개발에 필요한 라이브러리, 개발문서, 컴파일러(javac), 자바 실행환경인 JRE 등을 포함하고 있고, JDK를 이용해서 컴파일, 디버깅,.. 2023. 5. 30.
DTO와 Entity 오늘은 Spring MVC에서 사용되는 Entity와 DTO에 대해서 말해보려고 합니다. 먼저 Entity에 대해서 설명하고, 다음은 DTO에 대해서 설명하겠습니다. 그리고 Entity와 DTO를 어떤 식으로 변환하는지도 코드로 간단하게 알아보도록 하겠습니다. Entity Entity는 데이터베이스 테이블과 매핑되는 객체입니다. 보통 객체 지향 프로그래밍에서 엔티티는 특정 도메인 또는 개념을 나타내는 클래스입니다. 데이터베이스의 테이블과 매핑되기 때문에 엔티티는 데이터베이스의 테이블 구조와 일치하는 필드를 가지고 있습니다. 즉, Entity는 데이터베이스와 직접 맞닿아 있다는 것을 의미하고, 그렇기 때문에 컨트롤러나 VIew에 직접 전달하여 사용하는 것은 권장되지 않습니다. 그 이유는 컨트롤러나 View.. 2023. 5. 16.
[프로그래머스 LV2] 연속된 부분 수열의 합 이번에 풀어본 문제는 연속된 부분 수열의 합이라는 문제입니다. 아래는 해당 문제에 대한 설명입니다. 문제 설명 비내림차순으로 정렬된 수열이 주어질 때, 다음 조건을 만족하는 부분 수열을 찾으려고 합니다. 기존 수열에서 임의의 두 인덱스의 원소와 그 사이의 원소를 모두 포함하는 부분 수열이어야 합니다. 부분 수열의 합은 k입니다. 합이 k인 부분 수열이 여러 개인 경우 길이가 짧은 수열을 찾습니다. 길이가 짧은 수열이 여러 개인 경우 앞쪽(시작 인덱스가 작은)에 나오는 수열을 찾습니다. 수열을 나타내는 정수 배열 sequence와 부분 수열의 합을 나타내는 정수 k가 매개변수로 주어질 때, 위 조건을 만족하는 부분 수열의 시작 인덱스와 마지막 인덱스를 배열에 담아 return 하는 solution 함수를 .. 2023. 5. 7.
[프로그래머스 LV2] 두 원 사이의 정수쌍 이번 문제는 좌표평면 위의 원이 두 개가 주어지고, 해당 원 사이의 정수쌍인 좌표의 개수를 구하는 문제입니다. 처음 봤을 땐 진짜 어이없게 문제를 풀어보았는데, 당연히 틀렸고요. 여러 번 트라이를 한 이후에 풀 수 있었습니다. 그중에서 2가지 풀이를 소개해드리려고 하는데, 첫 풀이는 시간 초과가 나온 풀이법이고, 다음 풀이법은 정답처리된 풀이법입니다. 시간초과 풀이법 시간초과 풀이법은 브루트포스 방식으로 무식하게 풀려고 했습니다, 먼저 코드를 보도록 하겠습니다. for i in range(r2**2): if x**2 + y**2 >= r1**2 and x**2 + y**2 = r1**2 and y > 1: y -= 1 elif (x+1)**2 + y**2 >= r1**2 and x < r2: x += 1.. 2023. 4. 30.
반응형