[백준] 문어 - 21313번
·
여러가지/알고리즘 & 자료구조
문어  1 초1024 MB1673112998366.780%문제 문어에게 여덟개의 팔이 있다는 사실은 잘 알려져 있다. 하지만 문어들이 자신의 팔들을 1번, 2번, 3번, ..., 8번이라고 부른다는 말은 오늘 처음 들었을 것이다! 단, 시계방향으로 오름차순이라던가 하는 규칙은 없다. (물론 그러한 문어도 존재할 수 있다.) 문제에선 편의상 팔 대신 손이라고 부르자.문어들은 정월 대보름을 맞아 강강술래를 하려고 한다. 각 문어는 양 옆의 서로 다른 두 문어와 손을 맞잡아 원을 만든다. 문어끼리 손을 잡을 때 지켜야 할 예절이 있다.서로 같은 번호의 손을 잡아야 한다.한 문어와 둘 이상의 손을 잡을 수 없다.한 손으로 여러 문어의 손을 잡을 수 없다.모든 문어들은 예의바르기 때문에 예절을 항상 따른다.강강술..
[백준] 쉽게푸는문제 - 1292번
·
여러가지/알고리즘 & 자료구조
느낀점메모리 효율성:수열을 미리 생성하지 않고 필요한 부분만 계산하는 방식은 메모리를 효율적으로 사용합니다. 이는 특히 메모리 제한이 있는 환경에서 유용할 수 있습니다.코드 간결성:수열 생성과 구간 합 계산을 동시에 수행하는 접근 방식은 코드가 더 간결하고 이해하기 쉬운 구조를 제공합니다.시간 효율성:수열을 미리 생성하는 방식은 특정 상황에서 더 빠르게 구간 합을 계산할 수 있지만, 수열 생성 자체에 많은 시간이 소요될 수 있습니다.메모리를 덜 사용하는 방식은 시간 복잡도가 더 높을 수 있습니다. 특히 입력 크기 B가 클 경우 성능에 영향을 미칠 수 있습니다.문제 요구 사항과 실제 성능:두 방식 모두 문제의 요구 사항을 만족하며, 실제 실행 시간과 메모리 사용량도 문제의 제한 내에 있습니다. 그러나 메모..
[백준] 적어도 대부분의 배수 - 1145번
·
여러가지/알고리즘 & 자료구조
느낀점코드 개선의 중요성:코드 개선을 통해 가독성과 효율성을 높일 수 있어 좋았습니다. 시간 복잡도를 유지하면서도 코드의 구조를 개선하여 더 나은 성능과 유지보수성을 확보할 수 있음을 느꼇습니다..스트림 API의 강력함:Java 스트림 API를 활용하여 복잡한 계산을 간결하고 직관적으로 표현할 수 있음을 다시 한 번 느꼈습니다. 스트림 API는 코드의 가독성을 크게 향상시킬 수 있는 강력한 도구입니다.모듈화와 함수 분리의 중요성:함수 분리와 모듈화를 통해 코드의 재사용성과 유지보수성을 높일 수 있음을 확인했습니다. 각 함수가 하나의 역할을 담당하도록 함으로써 코드의 복잡성을 줄이고, 필요한 경우 쉽게 수정할 수 있었습니다.효율적인 메모리 사용:메모리 사용 최적화를 통해 코드의 성능을 개선할 수 있음을 배..
[백준] 가장긴감소하는부분수열 - 11722번
·
여러가지/알고리즘 & 자료구조
가장 긴 감소하는 부분 수열1 초256 MB35656220881816962.951%문제수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 프로그램을 작성하시오.예를 들어, 수열 A = {10, 30, 10, 20, 20, 10} 인 경우에 가장 긴 감소하는 부분 수열은 A = {10, 30, 10, 20, 20, 10} 이고, 길이는 3이다.입력첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다.둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000)출력첫째 줄에 수열 A의 가장 긴 감소하는 부분 수열의 길이를 출력한다.예제 입력 1 복사610 30 10 20 20 10예제 출력 1 복사3코드package 가장긴감소하는부분수열;import java...
[백준] 부녀회장이될테야 - 2775번
·
여러가지/알고리즘 & 자료구조
부녀회장이 될테야 0.5 초 (추가 시간 없음)128 MB104395590145008757.510% 문제평소 반상회에 참석하는 것을 좋아하는 주희는 이번 기회에 부녀회장이 되고 싶어 각 층의 사람들을 불러 모아 반상회를 주최하려고 한다.이 아파트에 거주를 하려면 조건이 있는데, “a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다” 는 계약 조항을 꼭 지키고 들어와야 한다.아파트에 비어있는 집은 없고 모든 거주민들이 이 계약 조건을 지키고 왔다고 가정했을 때, 주어지는 양의 정수 k와 n에 대해 k층에 n호에는 몇 명이 살고 있는지 출력하라. 단, 아파트에는 0층부터 있고 각층에는 1호부터 있으며, 0층의 i호에는 i명이 산다.입력첫 번째 줄..
[백준] 핸드폰 번호 궁합 - 17202번호
·
여러가지/알고리즘 & 자료구조
핸드폰 번호 궁합 2 초256 MB35332684238377.622%문제어린시절 다들 한 번씩은 이름으로 궁합을 본 적이 있을 것이다. 이것과 비슷한 방식으로 중앙대학교에는 핸드폰 번호 궁합을 보는 것이 유행이라고 한다.핸드폰 번호 궁합을 보기 위해서는 먼저 궁합을 보고싶은 두 중앙대생 A와 B의 핸드폰 번호에서 맨 앞의 010과 "-"(하이픈)을 모두 제외한 후, A부터 시작하여 한 숫자씩 번갈아가면서 적는다. 그리고 인접한 두 숫자끼리 더한 값의 일의 자리를 두 숫자의 아래에 적어나가면서 마지막에 남는 숫자 2개로 궁합률을 구하게 된다.예를 들어, 아래의 그림과 같이 A의 번호가 010-7475-9336 이고, B의 번호가 010-3619-5974 이면, 7346715995393764에서 시작하여 0..
[백준] 가장 긴 증가하는 부분 수열 - 11053번
·
여러가지/알고리즘 & 자료구조
가장 긴 증가하는 부분 수열1 초256 MB169140679584509838.082%문제수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오.예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다.입력첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다.둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000)출력첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다.예제 입력 1 복사610 20 10 30 20 50예제 출력 1 복사4가장 긴 증가하는 부분 수열(LIS, Longest Incr..
DP(Dynamic Programming) 핥아보기
·
여러가지/알고리즘 & 자료구조
동적 프로그래밍(Dynamic Programming, DP) 알고리즘은 문제를 작은 하위 문제들로 나누어 해결한 다음, 그 결과를 결합하여 원래의 문제를 해결하는 기법입니다. DP는 주로 다음 두 가지 특징을 가진 문제에 사용됩니다:중복되는 하위 문제:동일한 하위 문제가 여러 번 반복해서 계산되는 경우.최적 부분 구조:문제의 최적 해가 하위 문제들의 최적 해로 구성될 수 있는 경우.DP 알고리즘은 크게 두 가지 방식으로 구현됩니다:탑다운(메모이제이션, Memoization):재귀를 사용하여 문제를 푸는 방식입니다.이미 계산된 하위 문제의 결과를 저장해두고, 동일한 하위 문제가 다시 등장할 때 저장된 값을 재사용합니다.이 방식은 재귀 호출로 인해 스택 오버플로우가 발생할 수 있으므로 주의가 필요합니다.바텀..