문제 설명 문자열 "hello"에서 각 문자를 오른쪽으로 한 칸씩 밀고 마지막 문자는 맨 앞으로 이동시키면 "ohell"이 됩니다. 이것을 문자열을 민다고 정의한다면 문자열 A와 B가 매개변수로 주어질 때, A를 밀어서 B가 될 수 있다면 밀어야 하는 최소 횟수를 return하고 밀어서 B가 될 수 없으면 -1을 return 하도록 solution 함수를 완성해보세요. 제한사항 0 < A의 길이 = B의 길이 < 100 A, B는 알파벳 소문자로 이루어져 있습니다. 풀이 음.. 원래대로라면 문자열을 배열로 바꿔서 이렇게 저렇게 하겠지만.. 이번엔 문자열 매서드를 이용해보자. 대략적으로 머릿속으로 먼저 구상해보면.. A를 오른쪽으로 한칸씩 밀면서 B랑 같아질때 까지 비교해보는데, 이때 move변수를 하나 ..
reduce()? reduce는 자바스크립트의 Array 객체에 내장되어 있는 매서드로, 개인적으로 가장 좋아하는 매서드중의 하나이다. 작동 방식은 기본적으로 2가지의 인자를 가지는데, 배열을 순환하면서 계속해서 들고갈 acc, 그리고 현재 원소인 cur을 갖는다. 쉽게 말하면, map()이나 filter()의 경우엔 각각의 원소들을 순회하면서 이전 원소나, 다음 원소에 대한 정보를 알기가 편하지가 않은데, reduce의 경우 acc에 다양한 형태로 배열을 순환하면서 생기는 결과값들을 저장 할 수가 있다. 리턴하는 결과값도 새로운 배열이 아닌 acc를 리턴하기 때문에 결과는 배열일수도, 객체일수도, 숫자일수도, 문자일수도있다. 가장 간단한 예로, [1,2,3,4,5] 라는 배열의 모든 원소의 합을 구할때..
문제 설명 문자열 my_string과 문자 letter이 매개변수로 주어집니다. my_string에서 letter를 제거한 문자열을 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ my_string의 길이 ≤ 100 letter은 길이가 1인 영문자입니다. my_string과 letter은 알파벳 대소문자로 이루어져 있습니다. 대문자와 소문자를 구분합니다. 풀이 letter이 길이가 1인 영문자이므로 단순하게 replaceAll() 매서드로 letter을 "" 으로 치환 후 리턴해준다. replace() 매서드를 사용 할 시 첫 letter만 제거되므로 replaceAll() 매서드를 사용했다. const solution = (my_string, letter) => my_strin..
문제 설명 영어에선 a, e, i, o, u 다섯 가지 알파벳을 모음으로 분류합니다. 문자열 my_string이 매개변수로 주어질 때 모음을 제거한 문자열을 return하도록 solution 함수를 완성해주세요. 제한사항 my_string은 소문자와 공백으로 이루어져 있습니다. 1 ≤ my_string의 길이 ≤ 1,000 풀이 my_string은 소문자로 이루어져 있으니 우선 제거할 소문자 모음의 배열을 변수로 만들어둔 뒤 split() 매서드로 문자열을 나눈 후, filter() 매서드를 이용해 소문자 모음 배열에 포함 여부를 체크 한뒤 join() 매서드로 다시 문자열로 변경 후 리턴해준다. const gather = ["a","e","i","o","u"]; const solution = (my_s..
문제 설명첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요. 제한사항0 { const [numer, denom] = [numer1*denom2 + numer2*denom1, denom1*denom2]; }앞뒤 순서 상관없이 분자에 더해야할 분수의 분모를 곱해준 뒤 더해주고, 분모는 서로 곱해줘서 우선 분수의 덧셈을 마무리 한다. 이제 기약분수를 구해야 하는데 유클리드 호제법을 사용해서 최대공약수를 구하는 함수를 만들어보자. const calcGCD = (a, b) ..
문제 설명머쓱이는 친구들과 동그랗게 서서 공 던지기 게임을 하고 있습니다. 공은 1번부터 던지며 오른쪽으로 한 명을 건너뛰고 그다음 사람에게만 던질 수 있습니다. 친구들의 번호가 들어있는 정수 배열 numbers와 정수 K가 주어질 때, k번째로 공을 던지는 사람의 번호는 무엇인지 return 하도록 solution 함수를 완성해보세요. 제한사항2 < numbers의 길이 < 100 0 < k < 1,000 numbers의 첫 번째와 마지막 번호는 실제로 바로 옆에 있습니다. numbers는 1부터 시작하며 번호는 순서대로 올라갑니다. 풀이음.. 그러니까 [1,2,3,4,5] 이렇게 서서 1번은 3번, 3번은 5번, 5번은 2번 이런식으로 진행되는거 같다. 동그랗게 서서 한명 건너뛰고 패스한다고 생각하면..
문제 설명프로그래머스 치킨은 치킨을 시켜먹으면 한 마리당 쿠폰을 한 장 발급합니다. 쿠폰을 열 장 모으면 치킨을 한 마리 서비스로 받을 수 있고, 서비스 치킨에도 쿠폰이 발급됩니다. 시켜먹은 치킨의 수 chicken이 매개변수로 주어질 때 받을 수 있는 최대 서비스 치킨의 수를 return하도록 solution 함수를 완성해주세요. 제한사항chicken은 정수입니다. 0 ≤ chicken ≤ 1,000,000 풀이주어진 치킨 숫자를 주문하려면 쿠폰 포함해서 몇마리를 구하는 문제가 아니라 그냥 주어진 치킨 만큼을 시켰을때 서비스치킨의 수를 구하는 문제다. 한가지 추가 조건은 서비스 치킨을 시켜도, 10마리 마다 쿠폰 1장이 발급되는 파격 조건이 붙어있다. 즉 100마리를 시키면 -> 쿠폰 100장 -> 치..
문제 설명 다음 그림과 같이 지뢰가 있는 지역과 지뢰에 인접한 위, 아래, 좌, 우 대각선 칸을 모두 위험지역으로 분류합니다. 지뢰는 2차원 배열 board에 1로 표시되어 있고 board에는 지뢰가 매설된 지역 1과, 지뢰가 없는 지역 0만 존재합니다. 지뢰가 매설된 지역의 지도 board가 매개변수로 주어질 때, 안전한 지역의 칸 수를 return 하도록 solution 함수를 완성해 주세요. 제한사항 board는 n * n 배열입니다. 1 ≤ n ≤ 100 지뢰는 1로 표시되어 있습니다. board에는 지뢰가 있는 지역 1과 지뢰가 없는 지역 0만 존재합니다. 풀이 function solution(board) { for(let y = 0; y < board.length; y ++){ for(let ..
문제 설명머쓱이는 행운의 숫자 7을 가장 좋아합니다. 정수 배열 array가 매개변수로 주어질 때, 7이 총 몇 개 있는지 return 하도록 solution 함수를 완성해보세요. 제한사항1 ≤ array의 길이 ≤ 100 0 ≤ array의 원소 ≤ 100,000 풀이const solution = (array) => array.join('').split('').filter(el => el === "7").length;array를 문자열로 바꾼 뒤, 다시 한글자 한글자인 배열로 바꾼 다음, filter로 7인것만 골라 다시 배열로 만든것의 갯수를 리턴. ex) [7, 77, 17] => 77717 => [7,7,7,1,7] => [7,7,7,7] => 4
문제 설명 문자열 my_str과 n이 매개변수로 주어질 때, my_str을 길이 n씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ my_str의 길이 ≤ 100 1 ≤ n ≤ my_str의 길이 my_str은 알파벳 소문자, 대문자, 숫자로 이루어져 있습니다. 풀이 const solution = (my_str, n) => { let count = 0; let result = []; while(true){ if(my_str.slice(count * n, (count * n)+n).length === 0) break; result.push(my_str.slice(count * n, (count * n)+n)); if(my_str.slice(count * n, ..
문제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에는 연산자가 적어도 하나 포함되어 있습니다. return type 은 정수형입니..