Computer Science(16)
-
[ KISS, YAGNI, DRY ] 소프트웨어 개발 3대 원칙
🤔찾아보게 된 계기개발 커뮤니티를 돌아다니다 밈같은 것을 보다 우연히DRY원칙을 준수하지 않는다 라는 이야기를 보고갑자기 웬 드라이..? 하고 알아보게 되었다. 알고보니 3대 원칙 중 하나였고 뜻을 알고보니 밈을 다시보고 피식하게 되었다. 😒KISS ( Keep It Simple, Stupid )의미: 가능한 단순하게 유지하라. 복잡성을 피하고, 명확하고 이해하기 쉬운 코드를 작성하라. 목표: 코드의 가독성을 높이고 유지보수를 용이하게 하며, 버그 발생 가능성을 줄이는 것. 🥹YAGNI ( You Ain't Gonna Need It )의미: 지금 당장 필요하지 않은 기능은 만들지 말라. 미래에 필요할 것 같다고 미리 구현하지 말고,정말 필요할 때 구현하라. 목표: 개발 시간과 노력을 절약..
2025.08.10 -
[ Circular Dependencies ] 의존성 순환
Circular Dependencies 의존성 순환이란 코드를 모듈화 하여 작업할 때 생기는 모듈간의 의존성이 순환하며 무한루프를 일으키게 되는 현상을 뜻한다. A라는 모듈이 B를 참조하여 의존성을 가지게 되고 B모듈 역시 A모듈을 참조하여 서로 의존성을 가지게 되면 A 혹은 B 모듈중 하나만 실행되어도 멈추지 않고 A모듈과 B모듈을 지속 실행하게 된다. Node.js의 의존성 순환 기본적으로 자바스크립트 모듈 시스템은 순환 참조를 허용한다. 때문에 런타임 오류가 발생하진 않지만 간혹 참조 평가 순서에 의해 순환참조로 인한 에러를 마주할 수 있다. 여기서 "평가 순서"란 객체가 파라미터를 넘기고 수행하는 시점을 뜻한다. 해결책 결과적으로는 서로 순환참조할 수 없도록 평가 순서에 영향을 미치지 않는 새로운..
2024.02.27 -
[ Computer Science ] REST API란?
API Application Programming Interface의 약자로 응용 프로그램에서 운영체제나 프로그래밍 언어가 제공하는 기능을 제어 가능하도록 만든 인터페이스이며, 프로그램들이 서로 상호작용하는 것을 돕는 매개체라고 볼 수 있다. REST HTTP를 기반으로 필요한 자원에 접근하는 방식을 정의해둔 아키텍처이다. REST는 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용가능한 것이 특징이다. REST의 속성 서버의 모든 자원은 클라이언트가 접근할 수 있는 고유 URI가 존재한다. 클라이언트가 요청할 때마다 필요한 정보를 보내주기 때문에 세션 정보를 보관할 필요가 없어 서비스의 자유도가 높아지고 유연한 아키텍처 적용이 가능하다. HTTP 메서드를 사용한다.(..
2023.12.25 -
[ Algorithm ] 누적합 알고리즘
누적합 알고리즘누적합 알고리즘은 어원 그대로 특정 값을 누적해서 더해줄때 사용되는 알고리즘이다.코딩테스트에서 구간의 합을 구하는 문제에서 주로 사용된다. 누적합 알고리즘 동작방식접두사 합(Prefix Sum): 배열 가장 앞부터 특정하는 위치까지 각 누적합을 미리 구해놓은 것이다.접두사 합을 활용하여 알고리즘을 을 아래와 같이 만들 수 있다.위치 각각에 대한 접두사 합을 계산하여 P에 저장한다.매번 특정 수 만큼의 쿼리정보를 확인할때 구간 합은 P[right] - P[left - 1] 이다. 주어진 배열Index12345678Value32412215 접두사 합 배열Index012345678Value03591012141520 이에 [주어진 배열]에서 각 인덱스별로 누적합을 구한 것이 [접두사 합 배열 (p..
2023.06.29 -
[ Algorithm ] 투 포인터 알고리즘
투 포인터 (Two Pointer)리스트에서 순차적으로 기록하며 처리할 때 두가지 위치(점: point)를지정하여 처리하는 알고리즘이다.예를 들어 [1, 2, 3, 4, 5, 6, 7, 8, 9] 리스트에서 4, 5, 6, 7, 8 을 말할때 "4에서 8까지의 수" 라고 말한다.위 예시에서 처럼 4~8까지의 수를 "시작점 4"와 "끝점 8"로 2개의 점으로 데이터의 범위를 특정하여문제를 처리하는 알고리즘을 뜻한다. 투 포인터를 활용하기부분 연속 수열찾기 문제에서 투 포인터 알고리즘을 활용하여 문제를 해결할 수 있다.시작점과 끝점이 첫 인덱스 0을 가리키도록 만든다.[현재 부분의 합 S]가 [찾아야할 값 M]과 같다면 카운트에 추가해준다.S가 M보다 작거나 같으면 끝점을 1 증가시켜준다.S가 M보다 크면 ..
2023.06.29 -
[ Algorithm ] 최단경로 알고리즘
최단경로 알고리즘, 다익스트라(Dijkstra)음의 가중치가 없는 그래프에서 한 정점에서 모든 정점까지의 최단거리를 각각 구하는알고리즘을 에츠허르 "다익스트라(Edsger Wybe Dijkstra)"라는 컴퓨터 과학자가 만들었다.그렇기 때문에 음의 간선이 존재하지 않는 최단경로 알고리즘을 "다익스트라" 알고리즘이라고 부른다. 최단경로 알고리즘 동작과정최단거리 테이블은 각 노드에서 현재노드까지의 최단 거리 정보를 가지며처리 과정에서 더 짧은 경로를 찾아다니며 더 짧은 경로로 값을 갱신한다.출발 노드를 설정최단거리 테이블을 초기화방문하지 않은 노드 중 최단거리 비용이 가장 적은 노드를 선택한다.해당 노드를 거쳐 다른 노드로 가는 비용을 최단거리 테이블에 갱신한다.3번, 4번 과정을 끝날때까지 반복한다. 플로..
2023.06.28