codeStates front-end/Algorithm
-
Algorithm의 개념2codeStates front-end/Algorithm 2023. 4. 6. 18:33
HTML 삽입 미리보기할 수 없는 소스 📌 Algorithm의 개념 문제를 해결하는 최선의 선택 📍순열과 조합 순열 서로 다른 n개의 원소를 가지는 어떤 집합에서 중복없이 순서에 상관있게 r개의 원소를 선택 또는 나열하는 것 순열은 조합과 달리 순서도 따져서 부분집합을 만든다. 순열의 식 P - Permutation n - 원소의 총개수 r - 그 중 뽑은 개수 순열은 중복을 허용하지 않기 때문에 반드시 R { e = e.charCodeAt(0); if(e 122){ result = '영문 소문자가 아닙니다.'; } }); result; // '올바릅니다.' 휴대전화 번호 유효성 검사 let regExp = /^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]..
-
Algorithm의 개념1codeStates front-end/Algorithm 2023. 4. 4. 11:38
HTML 삽입 미리보기할 수 없는 소스 📌 Algorithm의 개념 문제를 해결하는 최선의 선택 📍시간 복잡도 입력값의 변화에 따라 연산을 실행할 때, 연산 횟수에 비해 시간이 얼마만큼 걸리는가? 효율적인 알고리즘 구현 👉🏻👉🏻 입력값이 커짐에 따라 증가하는 시간의 비율을 최소화한 알고리즘 🔗 Big-O 표기법 시간 복잡도를 표기하는 방법 Big-O(빅-오) Big-Ω(빅-오메가) Big-θ(빅-세타) 각각 최악, 최선, 중간(평균)의 경우를 대하여 나타내는 방법, Big-O표기법이 가장 자주 사용 Big-O표기법 👉🏻👉🏻 최악을 고려 "최소한 특정 시간 이상이 걸린다" , "이 정도 시간까지 걸릴 수 있다" O(1) Big-O 표기법은 입력값의 변화에 따라 연산을 실행할 때, 연산 횟수에 비해 시간이 ..
-
[자료구조] Tree, GraphcodeStates front-end/Algorithm 2023. 3. 15. 20:19
HTML 삽입 미리보기할 수 없는 소스 📌 자료구조 자료구조란 여러 데이터의 묶음을 저장하고, 사용하는 방법을 정의한 것 데이터란? 문자, 숫자, 그림, 영상 등 실생활을 구설하고 있는 모든 값 데이터는 분석하고 정리하여 활용해야만 의미를 가질 수 있다. 📍Tree (거꾸로 뒤집어 놓은)나무의 형태 단방향 그래프의 한 구조로, 하나의 뿌리로부터 가지가 사방으로 뻗은 형태 컴퓨터의 디렉토리 구조가 가장 큰 예이다. 🔗 Tree의 특징 아래 그림과 같이 하나 이상의 데이터에 한 개의 경로와 하나의 방향으로만 연결된 계층적 자료구조 하나의 데이터 아래에 여러 개의 데이터가 존재할 수 있는 비선형 구조이다. 🤷♂️싸이클(cycle)이란? 시작 노드에서 출발해 다른 노드를 거쳐 시작 노드로 돌아올 수 있다면 사..
-
[자료구조] Stack, QueuecodeStates front-end/Algorithm 2023. 3. 14. 15:53
HTML 삽입 미리보기할 수 없는 소스 📌 자료구조 자료구조란 여러 데이터의 묶음을 저장하고, 사용하는 방법을 정의한 것 데이터란? 문자, 숫자, 그림, 영상 등 실생활을 구설하고 있는 모든 값 데이터는 분석하고 정리하여 활용해야만 의미를 가질 수 있다. 📍Stack 쌓다, 쌓이다, 포개지다 데이터를 순서대로 쌓는 자료구조(프링글스 구조) 예를 들어 스마트폰 "뒤로가기" 버튼 처럼 현재 수행되는 앱이 종료되고 바로 직전에 수행되는 앱이 다시 나타나는 구조 또한 스택 구조이다. 🔗 Stack의 특징 1. LIFO(Last In First Out) 후입선출의 구조(가장 최근에 들어온 데이터가 가장 먼저 나간다.) 최상단의 데이터를 저장하고 꺼내는 특징 최상단에서 행위가 이루어지며 데이터를 저장하고 검색하는 ..
-
[알고리즘] 재귀 함수codeStates front-end/Algorithm 2023. 2. 14. 15:12
📌 재귀 📍재귀의 이해 재귀 : 원래의 자리로 되돌아가거나 되돌아옴 🔗 재귀의 코드 function recursion () { console.log("This is") console.log("recursion!") recursion() } recursion() 함수? 자기 자신을 끝없이 호출하면서 같은 코드가 계속해서 실행된다 👉🏼 이 함수처럼 자기 자신을 호출하는 함수를 재귀 함수라고 한다 🔗 재귀로 문제 해결하기 문제 : 자연수로 이루어진 리스트(배열)을 입력받고, 리스트의 합을 리턴하는 함수 'arrSum'을 작성하세요. 1. 문제를 작게 쪼개기 [1, 2, 3, 4, 5] 의 합을 구하는 과정 1 + 2 + 3 + 4 + 5 =? 2 + 3 + 4 + 5 =? 3 + 4 + 5 =? 4 + 5 =..
-
Daily Coding 10codeStates front-end/Algorithm 2023. 2. 2. 18:11
📍문제 10( insertDash ) 문자열을 입력받아 연속된 한자리 홀수 숫자 사이에 '-'를 추가한 문자열을 리턴해야 합니다. 📥입력 인자1 : str string 타입의 문자열 📤 출력 String 타입의 문자열 ❗️주의사항 0은 짝수로 간주합니다. 나의 생각 문자열을 입력받아 -> str 연속된 한자리 홀수 숫자 사이에 -> 문자열을 알려면 문자열 한바퀴 돌아야 겠군 for문돌려 너 홀수야? -를 추가한 문자열을 리턴 -> -를 추가한 문자열이니 값을 새로 만들어서 -추가해서 리턴해줘야겠군 대충 폼 let result = str[0]; for(문자열을 다 돌렸을 때){ if(문자열 한자리 전이 짝수고 다음 껏도 짝수면) { 결과는 결과 + "-" } 새로운 문자열은 문자열 더하면서 계속 돌려 } ..
-
Daily Coding 9codeStates front-end/Algorithm 2023. 1. 30. 20:22
📍문제 9( ABCheck ) 문자열을 입력받아 문자열 내에 아래 중 하나가 존재하는지 여부를 리턴해야 합니다. 'a'로 시작해서 'b'로 끝나는 길이 5의 문자열 'b'로 시작해서 'a'로 끝나는 길이 5의 문자열 📥입력 인자1 : arr string 타입의 문자열 📤 출력 boolean 타입의 문자열 ❗️주의사항 대소문자를 구분하지 않습니다. 공백도 한 글자로 취급합니다. 'a'와 'b'는 중복해서 등장할 수 있습니다. 나의 생각 문자열을 입력받아 -> str 하나가 존재하는지 여부 -> 포문으로 돌려서 조건을 걸어야겠군 존재여부 -> 맞으면 true 틀리면 false a'로 시작해서 'b'로 끝나는 길이 5의 문자열 -> i === 'a' && str[i+4] === 'b' a'로 시작해서 'b'로..
-
Daily Coding 8codeStates front-end/Algorithm 2023. 1. 25. 20:43
📍문제 8( convertDoubleSpaceToSingle ) 문자열을 입력받아 해당 문자열에 등장하는 두 칸의 공백을 모두 한 칸의 공백으로 바꾼 문자열을 리턴해야 합니다. 📥입력 인자1 : arr string 타입의 문자열 📤 출력 string 타입의 문자열 ❗️주의사항 두 칸을 초과하는 공백은 존재하지 않는다고 가정합니다. 나의 생각 새로운 문자열을 리턴 모든 문자열의 길이를 반복후 str[i] 번째 공백 + str[i+1] 공백이 아닐 때 새로운 문자열을 추가 래퍼런스( = 나의 코드) function convertDoubleSpaceToSingle(str) { let result = ''; let before = ''; for (let i = 0; i < str.length; i++) { //..