목록CodeStates/learning contents (74)
Jieunny의 블로그
📌 JavaScript Q. Hoisting과 Temporal Dead Zone이 어떻게 연관되어 있는지 설명하세요. A. 호이스팅은 var, let, const, funtion, class 키워드 등을 사용해 선언하는 식별자들이 코드의 맨 위로 끌어 올려진 것처럼 동작하는 것을 말합니다. let, const와 var의 호이스팅 방식에는 차이가 있는데, var의 경우 선언 단계와 함께 undefined로 초기화 되므로 코드를 만나기 전부터 참조가 가능합니다. 반면에 let, const로 선언된 변수는 선언 단계와 초기화 단계가 분리되어 진행되기 때문에 스코프에는 변수가 등록되지만, 변수 선언문 코드에 도달하기 이전에 변수를 참조하려고 하면 참조 에러가 발생합니다. 스코프의 시작 지점부터 초기화 시작 지점..
📣 순열과 조합 𝟭. 순열 ✔️ 서로 다른 n개의 원소를 가지는 집합에서 어떤 중복 없이 순서에 상관있게 r개의 원소를 선택하거나 나열하는 것 ➰ 조합과 달리 순서도 따져서 부분집합을 만든다. ➰ nPr = n! / (n-r)! ➰ 3P2 = 3 * 2 = 6 𝟮. 조합 ✔️ 서로 다른 n개의 원소를 가지는 어떤 집합에서 중복 없이 순서에 상관없게 r개의 원소를 선택하는 것 ➰ 순서는 따지지 않는다. ➰ nCr = nPr / r! ➰ 3C2 = 3 * 2 / 2 * 1 = 3 🚨 순열과 조합 모두 N이 원소의 총개수이고 R이 뽑는 개수라고 할 때, 순열과 조합은 반드시 R b)가 있을 때 a를 b로 나눈 나머지를 r이라고 하면 a와 b의 최대공약수는 b와r의 최대공약수와 같다는 이론 => b를 r로 나..
📣 Greedy Algorithm 𝟭. Greedy Algorithm ✔️ 순간마다 당장 눈앞에 보이는 최적의 상황만을 쫓아 최종적인 해답에 도달하는 방법 𝟮. Greedy Algorithm 문제 해결 단계 1️⃣ 선택 절차 : 현재 상태에서의 최적의 해답을 선택한다. 2️⃣ 적절성 검사 : 선택된 해가 문제의 조건을 만족하는지 검사한다. 3️⃣ 해답 검사 : 원래의 문제가 해결되었는지 검사하고, 해결되지 않았다면 선택 절차로 돌아가 과정을 반복한다. 𝟯. Greedy Algorithm 적용 예시 Q. 김코딩은 오늘도 편의점에서 열심히 아르바이트하고 있습니다. 손님으로 온 박해커는 과자와 음료를 하나씩 집어 들었고, 물건 가격은 총 4,040원이 나왔습니다. 박해커는 계산하기 위해 5,000원을 내밀며,..
📣 알고리즘 𝟭. 알고리즘의 개념 ✔️ 어떤 문제를 해결하기 위해서 일련의 절차를 정의하고, 공식화한 형태로 표현한 일종의 문제 풀이 방법 ➰ 프로그래밍에서는 input 값을 통해 output 값을 얻기 위한 계산 과정을 의미 ㄴ 입력(input) : 출력에 필요한 자료 ㄴ 출력(output) : 알고리즘이 끝이 났다는 의미로 실행이 끝나면 적어도 한가지 결과를 출력해야 한다. ㄴ 유한성(Finiteness) : 유한한 명령어를 수행한 후, 유한한 시간 내에 종료해야 한다. ㄴ 명확성(Definiteness) : 알고리즘의 각 단계는 단순하고 명확해야 하며, 모호해서는 안된다. ㄴ 효율성(Efficiency) : 알고리즘은 가능한 한 효율적이어야 한다. 𝟮. 알고리즘의 중요성 ✔️ 절차가 명확하게 표현되..
📣 Github Action 𝟭. Github Actions 란? ✔️ Github가 공식적으로 제공하는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD 플랫폼 ➰ 레포지토리에서 Pull Request 나 push 같은 이벤트를 트리거로 GitHub 작업 워크플로를 구성할 수 있다. ㄴ 워크플로 : 하나 이상의 작업이 실행되는 자동화 프로세스로, 각 작업은 자체 가상 머신 또는 컨테이너 내부에서 실행 ㄴ .yml (또는 .yaml ) 파일에 의해 구성되며, 테스트, 배포 등 기능에 따라 여러개의 워크플로도 만들 수 있고 생성된 워크플로는 .github/workflows 디렉토리 밑에 위치한다. ➰ 비공개 레포지토리의 경우 Github Actions가 작동할 때의 용량과 시간이 제한되어있으..
📣 개발 프로세스의 발전 𝟭. 개발 프로세스 ✔️ 개발 프로세스는 소프트웨어 개발 생명주기를 기반으로 만들어졌다. 1️⃣ 요구 분석 및 시스템 명세 작성 : 문제분석 단계로, 개발할 소프트웨어의 기능과 제약조건, 목표 등을 사용자와 함께 정확히 정의하는 단계 ➰ 개발하고자 하는 소프트웨어의 성격을 정확히 이해하여 이를 토대로 개발 방법과 필요한 자원 및 예산 예측 후 요구명세를 작성한다. 2️⃣ 설계 : 앞서 정의한 기능을 실제로 수행하기 위한 방법을 논리적으로 결정한다. ➰ 시스템, 프로그램, UI(User Interface) 설계로 나뉘며, 시스템 구조설계는 시스템을 구성하는 내부 프로그램이나 모듈 간의 관계와 구조를 설계하고, 프로그램설계는 프로그램 내의 각 모듈에서의 처리 절차나 알고리즘을 설계한..