본문 바로가기

Algorithm

(402)
[프로그래머스(Java)] 문자열 여러 번 뒤집기 / StringBuilder.reverse(), toCharArray() Level. 0 문제 문자열 my_string과 이차원 정수 배열 queries가 매개변수로 주어집니다. queries의 원소는 [s, e] 형태로, my_string의 인덱스 s부터 인덱스 e까지를 뒤집으라는 의미입니다. my_string에 queries의 명령을 순서대로 처리한 후의 문자열을 return 하는 solution 함수를 작성해 주세요. * 제한사항 - my_string은 영소문자로만 이루어져 있습니다. - 1≤ my_string의 길이 ≤ 1,000 - queries의 원소는 [s, e]의 형태로 0 ≤ s ≤ e < my_string의 길이를 만족합니다. - 1 ≤ queries의 길이 ≤ 1,000 풀이 class Solution { public String solution(Strin..
[프로그래머스(Java)] 배열 만들기 6 / Stack Level. 1 문제 0과 1로만 이루어진 정수 배열 arr가 주어집니다. arr를 이용해 새로운 배열 stk을 만드려고 합니다. - i의 초기값을 0으로 설정하고 i가 arr의 길이보다 작으면 다음을 반복합니다. - 만약 stk이 빈 배열이라면 arr[i]를 stk에 추가하고 i에 1을 더합니다. - stk에 원소가 있고, stk의 마지막 원소가 arr[i]와 같으면 stk의 마지막 원소를 stk에서 제거하고 i에 1을 더합니다. - stk에 원소가 있는데 stk의 마지막 원소가 arr[i]와 다르면 stk의 맨 마지막에 arr[i]를 추가하고 i에 1을 더합니다. 위 작업을 마친 후 만들어진 stk을 return 하는 solution 함수를 완성해 주세요. 단, 만약 빈 배열을 return 해야한다면..
[프로그래머스(Java)] 조건 문자열 / BiFunction, Map.of() Level. 1 문제 문자열에 따라 다음과 같이 두 수의 크기를 비교하려고 합니다. 두 수가 n과 m이라면 - ">", "=" : n >= m - "", "!" : n > m - "=")) return n>=m; if(str.equals("!")) return n>m; if(str.equals("=", (a, b) -> a >= b, "!", (a, b) -> a > b, "
[프로그래머스(Java)] 왼쪽 오른쪽 / Stream Level. 0 문제 문자열 리스트 str_list에는 "u", "d", "l", "r" 네 개의 문자열이 여러 개 저장되어 있습니다. str_list에서 "l"과 "r" 중 먼저 나오는 문자열이 "l"이라면 해당 문자열을 기준으로 왼쪽에 있는 문자열들을 순서대로 담은 리스트를, 먼저 나오는 문자열이 "r"이라면 해당 문자열을 기준으로 오른쪽에 있는 문자열들을 순서대로 담은 리스트를 return하도록 solution 함수를 완성해주세요. "l"이나 "r"이 없다면 빈 리스트를 return합니다. * 제한사항 - 1 ≤ str_list의 길이 ≤ 20 - str_list는 "u", "d", "l", "r" 네 개의 문자열로 이루어져 있습니다. 풀이 class Solution { public String[]..
[프로그래머스(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의..