본문 바로가기

Algorithm

(390)
[프로그래머스(Java)] 삼각형의 완성조건 (2) Level. 0 문제 선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다. - 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다. 삼각형의 두 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 나머지 한 변이 될 수 있는 정수의 개수를 return하도록 solution 함수를 완성해주세요. * 제한사항 - sides의 원소는 자연수입니다. - sides의 길이는 2입니다. - 1 ≤ sides의 원소 ≤ 1,000 풀이 class Solution { public int solution(int[] sides) { int answer = 0; int min = Math.min(sides[0], sides[1]); int max = Math.max(sides[0]..
[프로그래머스(Java)] 구슬을 나누는 경우의 수 - 부동소숫점문제 Level. 0 문제 머쓱이는 구슬을 친구들에게 나누어주려고 합니다. 구슬은 모두 다르게 생겼습니다. 머쓱이가 갖고 있는 구슬의 개수 balls와 친구들에게 나누어 줄 구슬 개수 share이 매개변수로 주어질 때, balls개의 구슬 중 share개의 구슬을 고르는 가능한 모든 경우의 수를 return 하는 solution 함수를 완성해주세요. 제한사항 1 ≤ balls ≤ 30 1 ≤ share ≤ 30 구슬을 고르는 순서는 고려하지 않습니다. share ≤ balls 서로 다른 n개 중 m개를 뽑는 경우의 수 공식은 다음과 같습니다. 풀이 class Solution { // 부동소수점 문제 public int solution(int balls, int share) { long answer = 1; f..
[프로그래머스(Java)] 세 개의 구분자 / Stream, split Level. 0 문제 임의의 문자열이 주어졌을 때 문자 "a", "b", "c"를 구분자로 사용해 문자열을 나누고자 합니다. 예를 들어 주어진 문자열이 "baconlettucetomato"라면 나눠진 문자열 목록은 ["onlettu", "etom", "to"] 가 됩니다. 문자열 myStr이 주어졌을 때 위 예시와 같이 "a", "b", "c"를 사용해 나눠진 문자열을 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요. 단, 두 구분자 사이에 다른 문자가 없을 경우에는 아무것도 저장하지 않으며, return할 배열이 빈 배열이라면 ["EMPTY"]를 return 합니다. * 제한사항 - 1 ≤ myStr의 길이 ≤ 1,000,000 - myStr은 알파벳 소문자로 이루어진 문..
[프로그래머스(Java)] 배열 만들기 4 - Stack Level. 0 문제 정수 배열 arr가 주어집니다. arr를 이용해 새로운 배열 stk를 만드려고 합니다. 변수 i를 만들어 초기값을 0으로 설정한 후 i가 arr의 길이보다 작으면 다음 작업을 반복합니다. 만약 stk가 빈 배열이라면 arr[i]를 stk에 추가하고 i에 1을 더합니다. stk에 원소가 있고, stk의 마지막 원소가 arr[i]보다 작으면 arr[i]를 stk의 뒤에 추가하고 i에 1을 더합니다. stk에 원소가 있는데 stk의 마지막 원소가 arr[i]보다 크거나 같으면 stk의 마지막 원소를 stk에서 제거합니다. 위 작업을 마친 후 만들어진 stk를 return 하는 solution 함수를 완성해 주세요. * 제한사항 - 1 ≤ arr의 길이 ≤ 100,000 - 1 ≤ arr의..
[프로그래머스] 귤 고르기 / max_element, 내림차순 정렬 Level. 2 문제 경화는 과수원에서 귤을 수확했습니다. 경화는 수확한 귤 중 'k'개를 골라 상자 하나에 담아 판매하려고 합니다. 그런데 수확한 귤의 크기가 일정하지 않아 보기에 좋지 않다고 생각한 경화는 귤을 크기별로 분류했을 때 서로 다른 종류의 수를 최소화하고 싶습니다. 예를 들어, 경화가 수확한 귤 8개의 크기가 [1, 3, 2, 5, 4, 5, 2, 3]이라고 합시다. 경화가 귤 6개를 판매하고 싶다면, 크기가 1, 4인 귤을 제외한 여섯 개의 귤을 상자에 담으면, 귤의 크기의 종류가 2, 3, 5로 총 3가지가 되며 이때가 서로 다른 종류가 최소일 때입니다. 경화가 한 상자에 담으려는 귤의 개수 k와 귤의 크기를 담은 배열 tangerine이 매개변수로 주어집니다. 경화가 귤 k개를 고를 ..
[프로그래머스] 이진 변환 반복하기 Level. 2 문제 0과 1로 이루어진 어떤 문자열 x에 대한 이진 변환을 다음과 같이 정의합니다. - x의 모든 0을 제거합니다. - x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 바꿉니다. 예를 들어, x = "0111010"이라면, x에 이진 변환을 가하면 x = "0111010" -> "1111" -> "100" 이 됩니다. 0과 1로 이루어진 문자열 s가 매개변수로 주어집니다. s가 "1"이 될 때까지 계속해서 s에 이진 변환을 가했을 때, 이진 변환의 횟수와 변환 과정에서 제거된 모든 0의 개수를 각각 배열에 담아 return 하도록 solution 함수를 완성해주세요. * 제한사항 - s의 길이는 1 이상 150,000 이하입니다. - s에는 '1'이 최소 하나 이상 ..
[프로그래머스(Java)] 문자열 계산하기 / split Level. 0 문제 my_string은 "3 + 5"처럼 문자열로 된 수식입니다. 문자열 my_string이 매개변수로 주어질 때, 수식을 계산한 값을 return 하는 solution 함수를 완성해주세요. * 제한사항 - 연산자는 +, -만 존재합니다. - 문자열의 시작과 끝에는 공백이 없습니다. - 0으로 시작하는 숫자는 주어지지 않습니다.잘못된 수식은 주어지지 않습니다. - 5 ≤ my_string의 길이 ≤ 100 - my_string을 계산한 결과값은 1 이상 100,000 이하입니다. my_string의 중간 계산 값은 -100,000 이상 100,000 이하입니다. 계산에 사용하는 숫자는 1 이상 20,000 이하인 자연수입니다. my_string에는 연산자가 적어도 하나 포함되어 있습니다..
[프로그래머스(Java)] 영어가 싫어요 / map, replaceAll Level. 0 문제 영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요. * 제한사항 - numbers는 소문자로만 구성되어 있습니다. - numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다. - 1 ≤ numbers의 길이 ≤ 50 - "zero"는 numbers의 맨 앞에 올 수 없습니다. 풀이 class Solution { public long solution(String numbers) { String[] n..