본문 바로가기

프로그래머스2단계4

프로그래머스 - 짝지어 제거하기 문제 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다. 예를 들어, 문자열 S = baabaa 라면 b aa baa → bb aa → aa → 의 순서로 문자열을 모두 제거할 수 있으므로 1을 반환합니다. 요점 '연속된' 문자를 지운다는 것에 집중하면 좀더 쉽게 풀수 있다. 이번에는 while이나 재귀를 써야 .. 2023. 3. 10.
프로그래머스 - 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 함수를 완성해주세요. 요점 횟수가 정확히 정해지지 않은 상태에서 같은 코드를 반복하며 횟수를 계산해야 한다. 이진변환 메서드를 알고 있으면 편리하.. 2023. 3. 6.
프로그래머스 - 올바른 괄호 문제 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다. '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요. 요점 스택의 성질을 이해하고 있다면 어렵지 않게 풀 수 있다. pseudo code 1. 올바른 괄호는 "(" 로 시작하고 ")"로 닫혀야 하므로 ")"로 시작하거나 "("로 닫히는 경우는 false를 리턴해야한다. 2. 문자열 s내의 요소들 중 (가 있.. 2023. 3. 1.
프로그래머스 - 최댓값과 최솟값 문제 : 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다. 요점 : 문자열로 전달된 값들을 비교할 수 있는지를 물어보는 것 pseudo code 1. Math.max, Math.min을 이용한다. Math.max(), Math.min()은 전달 받은 파라미터 중 최대, 최소값을 리턴한다.예를 들어 Math.max(1,2,4,5,19)는 19를 리턴한다.이 때 전달 값은 배열에 들어있거나 문자열이면 안된다. 2. 입력받은 값이 문자열이므로.. 2023. 3. 1.