분류 전체보기

    2024 제2회 기사 실기 출제 예상(2)

    [4과목]IPC (Inter-Process Communication)모듈 간 통신 방식을 구현하기 위해 사용되는 대표적인 프로그래밍 인터페이스 집합 IPC의 대표적인 메소드 5가지메소드특징Shared Memory공유 가능한 메모리를 구성하여 다수의 프로세스가 통신하는 방식Socket네트워크 소켓을 이용하여 네트워크를 경유하는 프로세스 간에 통신하는 방식세마포어 ; SemaPhores공유 자원에 대한 접근 제어를 통해 통신하는 방식ㄴ 공유된 자원에 여러 개의 프로세스가 동시에 접근하면 안되며, 한번에 하나의 프로세스만 접근 가능하도록 해야함Pipes & named Pipes- Pipe라고 불리는 선입선출 형태로 구성된 메모리를 여러 프로세스가 공유하여 통신 하는 방식- Pipe는 하나의 프로세스가 이용중이..

    2024 제2회 기사 실기 출제 예상(1)

    [1과목]프로젝트 일정 계획프로젝트의 프로세스를 이루는 소작업을 파악하고 예측된 노력을 각 소작업에 분배하여 소작업의 순서와 일정을 정하는 것프로젝트 일정 계획에 사용되는 기능 : WBS, PERT/CPM, 간트 차트등 PERT ( Program Evaluation and Review Technique, 프로그램 평가 및 검토 기술)PERT는 프로젝트에 필요한 전체 작업의 상호 관계를 표시하는 네트워크각 작업별로 다음과 같이 단계를 나누어 종료시기를 결정한다.낙관적인 경우가능성이 있는 경우비관적인 경우개발 경험이 없어 소요 기간 예측이 어려운 프로젝트 일정 계획에 사용한다.노드와 간선으로 구성되며 원 노드에는 작업을, 간선에는 낙관치, 기대치, 비관치를 표시한다.결정 경로, 작업에 대한 경계 시간, 작업..

    [정보처리기사] 애플리케이션 테스트 관리 (1)

    애플리케이션 테스트- 애플리케이션에 잠재되어 있는 결함을 찾아내는 일련의 행위 또는 절차- 개발된 소프트웨어가 고객의 요구사항을 만족시키는지 확인하고 기능을 정확히 수행하는지 검증한다. 기본 원리기본 원리설명완벽한 테스트 불가능소프트웨어의 잠재적인 결함을 줄일 수 있지만 소프트웨어에 결함이 없다고 증명할 수는 없음파레토 법칙 (Pareto Principle)애플리케이션의 20%에 해당하는 코드에서 전체 결함의 80%가 발견된다는 법칙살충제 패러독스 (Pesticide Paradox)동일한 테스트 케이스로 동일한 테스트를 반복하면 더 이상 결함이 발견되지 않는 현상테스팅은 정황(Context) 의존소프트웨어의 특징, 테스트 환경, 테스터의 역량 등 정황에 따라 테스트 결과가 달라질 수 있으므로, 정황에 따..

    [알고리즘] 백준 11286 절대값 힙 node.js (heap)

    항상 class를 이용해 메서드를 구현한 후 호출하는 방식은 언제나 낯설고 어렵다. 풀이 링크https://www.acmicpc.net/problem/11286 풀이 방법1. 힙 구현2. 절대값을 이용해 크기를 비교해야하기 때문에 체킹 필요let [N, ...X] = require("fs") .readFileSync("/dev/stdin") .toString() .trim() .split("\n") .map(Number);class MinHeap { constructor() { this.heap = []; } push(val) { this.heap.push(val); this._siftUp(); } pop() { if ..

    [알고리즘]프로그래머스 - N으로 표현 <동적계획법(DP)>

    프로그래머스 - N으로 표현 문제 설명 아래와 같이 5와 사칙연산만으로 12를 표현할 수 있습니다. 12 = 5 + 5 + (5 / 5) + (5 / 5) 12 = 55 / 5 + 5 / 5 12 = (55 + 5) / 5 5를 사용한 횟수는 각각 6,5,4 입니다. 그리고 이중 가장 작은 경우는 4입니다. 이처럼 숫자 N과 number가 주어질 때, N과 사칙연산만 사용해서 표현 할 수 있는 방법 중 N 사용횟수의 최솟값을 return 하도록 solution 함수를 작성하세요. 제한사항 N은 1 이상 9 이하입니다. number는 1 이상 32,000 이하입니다. 수식에는 괄호와 사칙연산만 가능하며 나누기 연산에서 나머지는 무시합니다. 최솟값이 8보다 크면 -1을 return 합니다. 입출력 예 N n..

    [TypeScript] 타입스크립트란?

    자바스크립트 종류 1. 표준 자바스크립트인 ES5 2. ESNext, 3. ESNext에 타입 기능을 추가한 타입스크립트 타입스크립트로 개발했더라도 타입 기능을 사용하지 않는다면 ESNext 소스나 마찬가지임 javascript의 문제점 JavaScript의 동일 연산자는 (==) 인수를 강제로 변환하여(coerces), 예기치 않은 동작을 유발 if ("" == 0) { // 참입니다! 근데 왜?? } if (1 < x < 3) { // *어떤* x 값이던 참입니다! } JavaScript는 또한 존재하지 않는 프로퍼티의 접근을 허용 const obj = { width: 10, height: 15 }; const area = obj.width * obj.heigth; // area값은 NaN으로 뜸 -..

    [알고리즘] 백준 13904 과제 node.js (Greedy)

    그리디 관련 문제를 풀다가 이상한 점을 발견했다. 오름차순 내림차순에 따라 정답이 맞고 틀렸기 때문이다. https://www.acmicpc.net/problem/13904 13904번: 과제 예제에서 다섯 번째, 네 번째, 두 번째, 첫 번째, 일곱 번째 과제 순으로 수행하고, 세 번째, 여섯 번째 과제를 포기하면 185점을 얻을 수 있다. www.acmicpc.net 풀이 방법 주어진 과제들을 순서대로 정렬한 뒤, 각 마감일까지의 날짜 중에서 가장 높은 점수를 얻을 수 있는 과제를 선택하는 방식으로 탐욕적으로 접근하였다. ❌틀린 코드 let input = require("fs").readFileSync("예제.txt").toString().split("\n"); const N = parseInt(in..

    [알고리즘] 탐욕법(Greedy)

    탐욕법 (Greedy) 그리디 알고리즘 (탐욕법, Greedy Algorithm) 이란? 탐욕 알고리즘은 말 그대로 선택의 순간마다 당장 눈 앞에 보이는 최적의 상황만을 쫓아 최종적인 해답에 도달하는 방법이다. '각 단계에서 최적이라고 생각되는 것을 선택'해 나가는 방식으로 진행하여 최종적인 해답에 도달하는 알고리즘 - 이 때, 항상 최적의 값을 보장하는 것이 아니라 최적의 값의 '근사한 값'을 목표로 한다. 탐욕 알고리즘을 적용할 수 있는 문제들은 지역적으로 최적이면서 전역적으로 최적인 문제들이다. 그리디 알고리즘 활용 기법 1. 탐욕 선택 속상 (greedy choice property) 각 단계에서 '최선의 선택'을 했을 때 전체 문제에 대한 최적해를 구할 수 있는 경우를 말한다. 즉, 각 단계에서..

    [알고리즘] 완전탐색 예제 # 1 단순 브루트포스

    프로그래머스 Level 1 최소직사각형 https://school.programmers.co.kr/learn/courses/30/lessons/86491?language=javascript 더보기 명함 지갑을 만드는 회사에서 지갑의 크기를 정하려고 합니다. 다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서, 작아서 들고 다니기 편한 지갑을 만들어야 합니다. 이러한 요건을 만족하는 지갑을 만들기 위해 디자인팀은 모든 명함의 가로 길이와 세로 길이를 조사했습니다. 아래 표는 4가지 명함의 가로 길이와 세로 길이를 나타냅니다. 명함 번호 가로 길이 세로 길이 1 60 50 2 30 70 3 60 30 4 80 40 가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) x 70(세로)..

    [알고리즘] 완전 탐색

    완전 탐색 (Brute Force) 1. 완전 탐색이란? 가능한 모든 경우의 수를 일일이 나열하면서 답을 찾는 방법을 의미한다. '무식하게 푼다'라는 의미인 Brute-Force (브루트 포스)라고도 부른다. 알고리즘을 모르는 사람이 프로그래밍 문제를 푼다면, 당연히 가능한 모든 경우들을 다 구해서 그중에 만족하는 답을 찾아낼 것이고 이 과정 자체가 완전 탐색이다. 대신에 이 방식은 절대 답을 못 구하는 경우는 없으므로 나름 강력한 방법이다. 하지만, 알고리즘을 사용할 때는, 기본적으로 2가지 규칙을 적용한다. 1. 사용된 알고리즘이 적절한가? ( 문제를 해결할 수 있는가 ) -> 만족 2. 효율적으로 동작하는가? -> 제한이 따르는 경우가 있음 (시간복잡도 측면) 2. 완전 탐색 기법 활용 방법 1. ..

    [Javascript] for, foreach

    알고리즘 문제를 풀던 중 다른 분 코드에서 foreach의 사용을 보게 되었다. foreach의 존재는 알지만 for문이 익숙하다보니 foreach는 사용하지 않게 되었는데 이번 기회에 차이를 다시 한번 정리하며 어떤 문법을 사용하는것이 편한지 공부 하고자 한다. for문 const wires = [[1,2],[2,3],[3,4]] for (let i = 0; i < wires.length; i++) { let wire = wires[i]; let node1 = wire[0]; let node2 = wire[1]; tree[node1].push(node2); tree[node2].push(node1); } for (let i = 0; i < wires.length; i++) { let wire = wir..

    [알고리즘] Hash

    Key-value쌍으로 데이터를 빠르게 찾아보세요. 👩🏼‍💻 해시 키와 값이 한 쌍으로 구성된 데이터 👩🏼‍💻 해시 테이블 key, value가 쌍을 이룬 형태로 데이터가 저장 되어있는 자료구조 데이터 검색과 저장이 아주 빠르게 진행됨 검색과 저장의 평균적인 시간복잡도가 O(1+α(적재율))에 수렴 👩🏼‍💻 해시 테이블의 원리 파이썬의 딕셔너리와 동일 [JS에서 해시 쓰는 방법] 사실 js에서 일반 배열에서 Key값에 문자열이 주는게 가능함 왜? js배열은 우리가 알고있는 배열과 조금 다른 희소배열이기 때문 희소배열 : 여러개의 자료형을 허락하는 배열 🚨 Map key가 있는 데이터를 저장하는데 쓰이는 자료구조 key값은 문자열 또한 가능 new Map() -> Map 객체를 만들때 쓰인다. map.se..