분류 전체보기
-
[알고리즘] 프로그래머스 level2 - 피보나치수(JAVA)알고리즘 2023. 9. 30. 15:40
설명 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다. 예를들어, - F(2) = F(0) + F(1) = 0 + 1 = 1 - F(3) = F(1) + F(2) = 1 + 1 = 2 - F(4) = F(2) + F(3) = 1 + 2 = 3 - F(5) = F(3) + F(4) = 2 + 3 = 5 와 같이 이어집니다. 2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수, solution을 완성해 주세요. 첫번 째 풀이 class Solution { public int solution(int n) { if(n==0) return 0; else if(n==1) r..
-
[알고리즘] 프로그래머스 level2 - 최솟값 만들기(JAVA)알고리즘 2023. 9. 30. 15:18
설명 길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱한 값을 누적하여 더합니다. 이때 최종적으로 누적된 값이 최소가 되도록 만드는 것이 목표입니다. (단, 각 배열에서 k번째 숫자를 뽑았다면 다음에 k번째 숫자는 다시 뽑을 수 없습니다.) 예를 들어 A = [1, 4, 2] , B = [5, 4, 4] 라면 - A에서 첫번째 숫자인 1, B에서 첫번째 숫자인 5를 뽑아 곱하여 더합니다. (누적된 값 : 0 + 5(1x5) = 5) - A에서 두번째 숫자인 4, B에서 세번째 숫자인 4를 뽑아 곱하여 더합니다. (누적된 값 : 5 + 16(4x4) = 2..
-
[알고리즘] 코드잇 - 출근하는 방법2(Python)알고리즘 2023. 9. 30. 11:58
설명 영훈이는출근할 때 계단을 통해서 사무실로 가는데요. 급할 때는 두 계단씩 올라가고 여유 있을 때는 한 계단씩 올라갑니다. 결국 계단을 오를 수 있는 모든 방법으로 계단을 올라갔는데요. 이제 다르게 계단을 올라갈 수는 없을까 고민하던 영훈이는 특이한 방법으로 계단을 오르려고 합니다. 가령 계단을 한 번에 1,2,4칸씩 올라가 보는건데요. 예를 들어서 계단을 4개를 올라가야되면 - 1, 1, 1, 1 - 2, 1, 1 - 1, 2, 1 - 1, 1, 2 - 2, 2 - 4 총 6개 방법이 있네요. 함수 staircase()는 파라미터로 총 계단수 n 그리고 한 번에 올라갈 수 있는 계단 수를 possible_steps로 받고, 올라갈 수 있는 방법의 수를 효율적으로 찾아서 리턴합니다. 그러니까 n이 3..
-
[알고리즘] 코드잇 - 출근하는 방법1(Python)알고리즘 2023. 9. 30. 11:42
설명 영훈이는 출근할 때 계단을 통해 사무실로 가는데요. 급할 때는 두 계단씩 올라가고 여유 있을 때는 한 계단씩 올라 갑니다. 어느날 문득, 호기심이 생겼습니다. 한 계단 또는 두 계단씩 올라가서 끝까지 올라가는 방법은 총 몇가지가 있을까요? 계단 4개를 올라간다고 가정하면, 이런 방법들이 있습니다. - 1, 1, 1, 1 - 2, 1, 1 - 1, 2, 1 - 1, 1, 2 - 2, 2 총 5개 방법이 있네요. 함수 staircase()는 파라미터로 계단 수 n을 받고, 올라갈 수 있는 방법의 수를 효율적으로 찾아서 리턴합니다. 힌트1 계단의 높이가 4인 경우를 생각해 봅시다. - 0 -> 1 -> 2 -> 3 -> 4 - 0 -> 1 -> 2 -> 4 - 0 -> 1 -> 3 -> 4 - 0 -> ..
-
[알고리즘] 코드잇 - 삼송전자 주식 분석(Python)알고리즘 2023. 9. 30. 11:24
설명 태호는주식 분석이 취미입니다. 요즘 제일 핫한 종목은 삼송전자인데요. 삼송전자의 주식을 딱 한 번 사고 팔았다면 최대 얼마의수익이 가능했을지 궁금합니다. 그것을 계산해 주는 O(n)함수 max_profit()을 작성하세요. max_profit()은 파라미터로 일별 주식 가격이 들어 있는 리스트 stock_prices를 받고 최대 수익을 리턴합니다. 주식은 딱 한번만 사고 한 번만 팝니다. 그리고 사는 당일에 팔 수는 없습니다. 하나의 예시로, 지난 6일간 삼송전자의주식 가격이 이렇다고 가정합시다. max_profit([7, 1, 5, 3, 6, 4]) 이 기간 동안 낼 수 있는 최대 수익은 얼마일까요? 둘째 날 1에 사서 다섯째 날 6에 팔면 총 5의 수익이 생깁니다. 또 다른 예시를 봅시다. ma..
-
[알고리즘] 프로그래머스 level2 - JadenCase 문자열 만들기(JAVA)알고리즘 2023. 9. 29. 21:55
문제 설명 JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고) 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건 - s는 길이 1 이상 200 이하인 문자열입니다.- s는알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다. 1. 숫자는 단어의첫 문자로만 나옵니다. 2. 숫자로만 이루어진 단어는 없습니다. 3. 공백문자가 연속해서 나올 수 있습니다. 입출력 예 s return "3people unFollowed me" "3people Unfollowed Me" "for the la..
-
[알고리즘] 프로그래머스 level2 - 최댓값과 최솟값(JAVA)알고리즘 2023. 9. 29. 21:11
문제 설명 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다. 제한조건 - s에는 둘 이상의 정수가 공백으로 구분되어 있습니다. 풀이 class Solution { public String solution(String s) { String[] newS = s.split(" "); int max =Integer.parseInt(newS[0]); int min =Integer.parseInt(newS[0]); for(int i=0; i< ne..
-
[알고리즘] 코드잇 - 투자 귀재 규식이3(Python)알고리즘 2023. 9. 29. 20:08
실습설명 이미 sublist_max() 함수를 각각 Brute Force 과 Divide and Conquer 방식으로 작성했는데요. Brute Force로 풀었을 때는 시간 복잡도가 O(n^2), Divide and Conquer를 사용했을 때는 O(n lg n)였습니다. 이번 과제에서는 시간 복잡도를 O(n)로 한 번 더 단축 해 보세요. 힌트1 아래의 리스트를 예시로 생각해 봅시다. profits = [7, -3, 4, -8] profits의 최대 수익은 아래 두가지 중 하나입니다. 1. 부분문제 [7, -3, 4]의 최대 수익 (sublist_max([7, -3, 4])) 2. 부분문제 [7, -3, 4, -8]에서 -8을 포함한 구간의 최대 수익 첫 번째 경우는 당연하죠? 최대 수익 구간에 마지..