java 355

[프로그래머스 코딩테스트] K번째수(Java)

문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 array의 길이는 1 이상 100 이하입니다. a..

[프로그래머스 코딩테스트] 소인수분해(Java)

문제 설명 소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다. 예를 들어 12를 소인수분해하면 2 * 2 * 3으로 나타낼 수 있습니다. 따라서 12의 소인수는 2와 3입니다. 자연수 n이 매개변수로 주어질 때 n의 소인수를 오름차순으로 담은 배열을 return 하도록 solution 함수를 완성해주세요. 제한사항 2

[프로그래머스 코딩테스트] 코드 처리하기(Java)

문제 설명 문자열 code가 주어집니다. code를 앞에서부터 읽으면서 만약 문자가 "1"이면 mode를 바꿉니다. mode에 따라 code를 읽어가면서 문자열 ret을 만들어냅니다. mode는 0과 1이 있으며, idx를 0부터 code의 길이 - 1까지 1씩 키워나가면서 code[idx]의 값에 따라 다음과 같이 행동합니다. mode가 0일 때 code[idx]가 "1"이 아니면 idx가 짝수일 때만 ret의 맨 뒤에 code[idx]를 추가합니다. code[idx]가 "1"이면 mode를 0에서 1로 바꿉니다. mode가 1일 때 code[idx]가 "1"이 아니면 idx가 홀수일 때만 ret의 맨 뒤에 code[idx]를 추가합니다. code[idx]가 "1"이면 mode를 1에서 0으로 바꿉니다..

[프로그래머스 코딩테스트] 세 개의 구분자(Java)

문제 설명 임의의 문자열이 주어졌을 때 문자 "a", "b", "c"를 구분자로 사용해 문자열을 나누고자 합니다. 예를 들어 주어진 문자열이 "baconlettucetomato"라면 나눠진 문자열 목록은 ["onlettu", "etom", "to"]가 됩니다. 문자열 myStr이 주어졌을 때 위 예시와 같이 "a", "b", "c"를 사용해 나눠진 문자열을 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요. 단, 두 구분자 사이에 다른 문자가 없을 경우에는 아무것도 저장하지 않으며, return 할 배열이 빈 배열이라면 ["EMPTY"]를 return 합니다. 제한사항 1

[Spring] 2. 기초 지식 배우기

어떤 기능을 구현하고자 할 때, 기능을 구현하는 것은 중요하지만 한 기능에 초점을 맞춰 코드를 작성하는 것은 바람직하지 않습니다. 기능을 추가하거나 변경하는 경우 수정이 어려울 수 있기 때문입니다. 대신 클래스가 인터페이스를 의존하게 해서 프로그램 전체에서의 수정이 아닌, 인터페이스에서 부분만을 수정하는 것만으로도 원하는 결과를 얻을 수 있습니다. 독립적인 프로그래밍이 가능한 것입니다. 인터페이스는 상수와 메서드 타입만 정의한 것입니다. 일종의 추상 클래스인 셈입니다. 인터페이스는 다른 클래스에서 구현하는 것을 전제로 만들어집니다. 클래스는 상속받을 때 extends를 쓰지만, 인터페이스는 implements를 씁니다. 자바에서는 원칙적으로 다중 상속을 허용하지 않지만, 인터페이스를 이용하여 다중 상속을..

Java/Spring 2023.05.26

[프로그래머스 코딩테스트] 최솟값 만들기(Java)

문제 설명 길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱한 값을 누적하여 더합니다. 이때 최종적으로 누적된 값이 최소가 되도록 만드는 것이 목표입니다. (단, 각 배열에서 k번째 숫자를 뽑았다면 다음에 k번째 숫자는 다시 뽑을 수 없습니다.) 예를 들어 A = [1, 4, 2], B = [5, 4, 4] 라면 A에서 첫번째 숫자인 1, B에서 첫번째 숫자인 5를 뽑아 곱하여 더합니다. (누적된 값 : 0 + 5(1 * 5) = 5) A에서 두번째 숫자인 4, B에서 세번째 숫자인 4를 뽑아 곱하여 더합니다. (누적된 값 : 5 + 16(4 * 4) =..

[프로그래머스 코딩테스트] 종이 자르기(Java)

문제 설명 머쓱이는 큰 종이를 1 x 1 크기로 자르려고 합니다. 예를 들어 2 x 2 크기의 종이를 1 x 1 크기로 자르려면 최소 가위질 세 번이 필요합니다. 정수 M, N이 매개변수로 주어질 때, M x N 크기의 종이를 최소로 가위질 해야 하는 횟수를 return 하도록 solution 함수를 완성해보세요. 제한사항 0 < M, N < 100 종이를 겹쳐서 자를 수 없습니다. 입출력 예 M N result 2 2 3 2 5 9 1 1 0 class Solution { public int solution(int M, int N) { int answer = M * N - 1; return answer; } } 입출력 예를 보자마자 공통점이 보여서 혹시 하고 입력해봤는데 정말 정답이네요. 문제는 복잡하..