[프로그래머스] 마지막 두 원소
·
여러가지/알고리즘 & 자료구조
배열의 마지막 두 원소에 따라 값을 추가하는 알고리즘 문제 풀이 (Java)이번 글에서는 배열의 마지막 두 원소를 비교하여 값을 추가하는 간단한 알고리즘 문제를 Java로 풀어보겠습니다. 문제는 배열의 마지막 원소와 그 이전 원소를 비교한 결과에 따라 배열에 새로운 값을 추가하는 방식으로 해결됩니다. 이 과정에서 다양한 배열 복사 및 확장 방법도 함께 알아보겠습니다. 이 글을 통해 배열을 효율적으로 확장하고 복사하는 여러 가지 방법에 대해 이해하고, 각 방법의 장단점을 파악하여 적절하게 사용할 수 있도록 해보겠습니다. 이 글이 여러분이 배열을 더 깊이 이해하고, Java를 통해 효율적으로 배열을 다루는 방법을 배우는 데 도움이 되기를 바랍니다.문제 설명정수 리스트 num_list가 주어질 때, 마지막 원..
[프로그래머스] 수 조작하기1
·
여러가지/알고리즘 & 자료구조
수 조작하기 1 - 알고리즘 문제 풀이 (Java와 Python 코드)문제 설명이 문제에서는 주어진 정수 n과 문자열 control에 따라 n의 값을 변경하는 간단한 알고리즘을 작성하는 문제입니다. control은 "w", "a", "s", "d"로 구성된 문자열로, 각 문자는 다음과 같은 방식으로 n을 변경합니다:"w": n이 1 커집니다."s": n이 1 작아집니다."d": n이 10 커집니다."a": n이 10 작아집니다.문자열 control의 문자를 앞에서부터 하나씩 처리하여, 해당 문자에 맞는 연산을 적용한 후 마지막 n의 값을 반환하는 것이 목표입니다.제한사항-100,000 ≤ n ≤ 100,0001 ≤ control의 길이 ≤ 100,000control은 "w", "a", "s", "d"로만..
[백준] 문어 - 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..