JavaScript/알고리즘 90

프로그래머스 세번째 구분자 JS ( match()는 split()과 유사하다 / || 연산자 )

문제 설명 임의의 문자열이 주어졌을 때 문자 "a", "b", "c"를 구분자로 사용해 문자열을 나누고자 합니다. 예를 들어 주어진 문자열이 "baconlettucetomato"라면 나눠진 문자열 목록은 ["onlettu", "etom", "to"] 가 됩니다. 문자열 myStr이 주어졌을 때 위 예시와 같이 "a", "b", "c"를 사용해 나눠진 문자열을 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요. 단, 두 구분자 사이에 다른 문자가 없을 경우에는 아무것도 저장하지 않으며, return할 배열이 빈 배열이라면 ["EMPTY"]를 return 합니다. 🙋‍♀️ 내 생각 구분자를 이용해서 문자열을 자르는 문제이기때문에 바로 split()이 떠올랐다. 문제는 split(..

프로그래머스 글자지우기 JS ( for...of 반복가능한 객체를 간편하게 순회 )

문제 설명 문자열 my_string과 정수 배열 indices가 주어질 때, my_string에서 indices의 원소에 해당하는 인덱스의 글자를 지우고 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요. 🙋‍♀️ 내 생각 indices라는 매개변수에 적힌 값과 일치하는 위치의 String 요소를 제거하는 문제이다. 이 문제에서는 indices의 요소들을 my_string의 요소의 인덱스에 연결하는 것이 핵심이라고 생각했다. indices는 값자체를 이용하는 반면, my_string은 인덱스로 접근하여서 최종적인 값의 변경을 가져온다. indices: 배열안의 요소 그 자체를 이용 my_string: 문자열의 인덱스를 이용하여, 문자열을 변경 my_string의 인덱스를 각각 하..

프로그래머스 문자열이 몇 번 등장하는지 세기 JS ( indexOf() 특징 )

문제 설명 문자열 myString과 pat이 주어집니다. myString에서 pat이 등장하는 횟수를 return 하는 solution 함수를 완성해 주세요. 🙋‍♀️ 내 생각 우선, myString을 돌면서 ban, ana, nan과 같이 앞에서부터의 값을 담는 작업을 해야겠다고 생각했다. 그리고 그렇게 담은 값들중 pat을 포함하는 것만 남겨서 수를 세는 방법으로 문제를 풀었다. ✅ 내 코드 function solution(myString, pat) { const arr =[] for(i=0; i v===pat).length } 먼저 arr를 선언하고 []빈배열로 초기화해주었다. 그리고 앞에서부터 ban, ana..와 같이 담는 작업을 하기 위해서 for문을 사용했다. for문으로 myString을 ..

프로그래머스 순서 바꾸기 JS (slice(), ... 스프레드연산자 Spread Operator / splice() )

문제 설명 정수 리스트 num_list와 정수 n이 주어질 때, num_list를 n 번째 원소 이후의 원소들과 n 번째까지의 원소들로 나눠 n 번째 원소 이후의 원소들을 n 번째까지의 원소들 앞에 붙인 리스트를 return하도록 solution 함수를 완성해주세요. 🙋‍♀️ 내 생각 배열의 앞에서부터 n개를 잘라서 배열의 맨 뒤에 붙이는 문제이다. 배열의 인덱스를 이용해서 범위를 지정해야겠다고 생각했고, 또 배열을 잘라야하기때문에 slice()를 써야겠다고 생각했다. (slice()가 범위를 지정하면서 자르는 기능을 하기때문!!) ✅ 내 코드 function solution(num_list,n) { let front_list= num_list.slice(0,n) let back_list= num_lis..

프로그래머스 문자열 뒤집기 JS ( 문자열의 특정부분만 변경 / slice()의 범위 )

문제 설명 문자열 my_string과 정수 s, e가 매개변수로 주어질 때, my_string에서 인덱스 s부터 인덱스 e까지를 뒤집은 문자열을 return 하는 solution 함수를 작성해 주세요. 🙋‍♀️ 내 생각 문자열의 인덱스를 이용해서 중간의 일부만 변경하는 문제이다. 인덱스를 어디부터 어디까지 자를지를 정해서 자르기 위해서 slice()를 이용해야겠다고 생각했다. 그리고 변경하는 값이 중간에 위치하기때문에 결국에 문자열은 크게는 3조각으로 나뉠것이기 때문에 string1,2,3로 3개의 변수를 만들어서 잘라진 값들을 담아서 문제를 풀었다. ✅ 내 코드 function solution(my_string,s,e){ let string1='' let string2='' let string3='' ..

프로그래머스 세로읽기 JS ( 가로 m글자씩, 세로 c번째 적힌값찾기 )

문제 설명 문자열 my_string과 두 정수 m, c가 주어집니다. my_string을 한 줄에 m 글자씩 가로로 적었을 때 왼쪽부터 세로로 c번째 열에 적힌 글자들을 문자열로 return 하는 solution 함수를 작성해 주세요. 🙋‍♀️ 내 생각 가로로 m글자씩 적고, 세로의 c번째값들만 추출해서 하나의 문자열을 만드는 것이 목표이다. 위의 첫번째예시를 기준으로 예를 들어서 이해한 것을 정리하면, 4글자씩 가로로 적고 2열의 값들만 추출한다. (결과값: "happy") 규칙을 찾아보면, 인덱스는 m만큼씩 차이가 난다 (h와 a의 인덱스는 m만큼 차이난다. a와 p도, p와 p도, p와 y도 m만큼의 차이이다.) 인덱스가 일정하게 증가하는 규칙을 이용해서 풀어보았다. ✅ 내 코드 function s..

프로그래머스 문자열 잘라서 정렬하기 JS (split()의 구분자가 문자열 끝에 위치한다면? / match()의 특징 )

문제 설명 문자열 myString이 주어집니다. "x"를 기준으로 해당 문자열을 잘라내 배열을 만든 후 사전순으로 정렬한 배열을 return 하는 solution 함수를 완성해 주세요. 단, 빈 문자열은 반환할 배열에 넣지 않습니다. 🙋‍♀️ 내 생각 인자를 기준으로 문자열을 잘라서 배열로 반환하는 split(), 정렬을 위해 사용하는 sort(), 배열을 돌면서 원하는 값만을 구할 수 있는 filter()를 알고 있다면 간단하게 풀 수 있는 문제이다. 자바스크립트에서 주로 사용하는 메서드들에 익숙하면 금방 풀 수있는 문제이다. 그래서 어렵지 않게 풀었지만 학습한 것이 있어서 블로그에 기록하게 되었다. ✅ 내 코드 function solution(myString) { return myString.spli..

프로그래머스 부분 문자열 이어 붙여 문자열 만들기 JS ( 배열의 index로 2개의 배열매칭, 중첩배열에서 값추출 )

문제 설명 길이가 같은 문자열 배열 my_strings와 이차원 정수 배열 parts가 매개변수로 주어집니다. parts[i]는 [s, e] 형태로, my_string[i]의 인덱스 s부터 인덱스 e까지의 부분 문자열을 의미합니다. 각 my_strings의 원소의 parts에 해당하는 부분 문자열을 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요. 🙋‍♀️ 내 생각 이 문제는 배열을 이용해서 부분문자열을 만들어서 이어붙이는 문제이다. 각각 다른 값이 들어있는 배열을 매개변수로 이용하고(my_strings/parts), 인덱스i를 통해서 원하는 범위를 지정하여 얼마큼 반복할지를 정한다. my_string은 문자열값을, parts는 s,e를 숫자로 담고 있고 이 2개가 만..

프로그래머스 문자열 섞기 JS ( 복합할당 연산자 += )

문제 설명 길이가 같은 두 문자열 str1과 str2가 주어집니다. 두 문자열의 각 문자가 앞에서부터 서로 번갈아가면서 한 번씩 등장하는 문자열을 만들어 return 하는 solution 함수를 완성해 주세요. 🙋‍♀️ 내 생각 짧은 문제의 길이만큼 해결이 어려운 문제는 아니었지만, 공부할 점이 있어서 기록해둔다. 처음 문제를 보자마자 생각난 해결법은 2가지였다. 1️⃣ 문자열로 각각 돌면서 더하기(+) 2️⃣ 배열을 만들고 돌면서 push하기 나는 1️⃣번 방법으로 풀었다. 둘다 result를 먼저 선언하고, 초기값을 지정한 다음에 for문을 도는 기본방식을 동일하다. ✅ 내 코드 function solution(str1, str2) { let result ='' for(i=0; i

프로그래머스 l로 만들기 JS (replaceAll() / for of문 )

문제 설명 알파벳 소문자로 이루어진 문자열 myString이 주어집니다. 알파벳 순서에서 "l"보다 앞서는 모든 문자를 "l"로 바꾼 문자열을 return 하는 solution 함수를 완성해 주세요. 🙋‍♀️ 내 생각 처음에는 인덱스를 통해서 접근하다가 갑자기 replaceAll()이 번쩍 떠올랐다. replaceAll()과 정규식을 이용하면 어렵지 않게 풀 수 있는 문제이다. ✅ 내 코드 function solution(myString) { return myString.replaceAll(/[a-k]/g,'l') } replaceAll()은 String에서 원하는 모든값을 찾아서 특정한 값으로 변환할 수 있는 메서드이다. (찾아서 새롭게 바꾸고 싶은값, 새롭게 바뀔 값)을 인자로 넣어준다. 이 문제에서..