알고리즘 기법 중 하나인 방향 배열에 대해 정리한 글입니다.방향 배열 (Direction Array)2차원 이상의 격자 혹은 좌표 공간에서 인접 위치로 이동해야 할 때 각 방향을 일정한 규칙으로 정의해두는 배열2차원 이상의 격자 문제에서 인접 위치로의 접근을 단순화하여 가독성, 유지보수성, 구현 효율을 높여주는 기법보통 BFS/DFS, 시뮬레이션, 그래프 탐색 등에서 빈번하게 사용정식 알고리즘이라기 보다는 반복적인 코드 패턴을 단순화하고 명시화하는 테크닉에 가깝지만, 문제 해결 과정에서 거의 필수적으로 사용될 만큼 유용성이 매우 큰 기법int dx[4] = { -1, 1, 0, 0 }; // 행(세로) 방향 이동int dy[4] = { 0, 0, -1, 1 }; // 열(가로) 방향 이동for (in..
[APS][C++] SWEA D1 2071번 평균값 구하기 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com문제10개의 수를 입력 받아, 평균값을 출력하는 프로그램을 작성하라.(소수점 첫째 자리에서 반올림한 정수를 출력한다.)제약 사항각 수는 0 이상 10000 이하의 정수이다.입력가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.각 테스트 케이스의 첫 번째 줄에는 10개의 수가 주어진다.출력출력의 각 줄은 '#t'로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다. (t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)풀이문제 자체는 어렵지 않으나, 정수 10개의 평..
정적 배열과 동적 배열에 대해 정리한 글입니다. 기본 개념과 특징을 중점으로 정리하였습니다.정적 배열 (Static Array)정적 배열의 정의정적 배열은 배열의 크기가 컴파일 시 결정되는 배열의 의미일반적으로 스택 영역(stack section)에 할당되며, 프로그램이 시작될 때 필요한 메모리 공간을 이미 확보한 상태로 실행메모리 구조스택 영역 할당일반적으로 함수 내부에 정적 배열을 선언하면, 해당 함수가 호출될 때 스택에 고정된 크기의 메모리가 할당됨함수가 종료되면 스택이 정리되면서 배열도 소멸함고정 크기배열의 크기를 변경할 수 없음ex. int arr[10];으로 선언한 배열은 10개의 int 공간을 항상 차지함 (변경 불가)정적 배열의 장단점장점접근 속도가 빠름모든 요소가 연속적인 메모리에 저장되..
웹 개발 시 JavaScript를 이용하여 HTML DOM을 제어하는 방법에 대해 정리한 글입니다.DOM의 기본 개념DOM의 정의DOM(Document Object Model)은 웹 문서를 구조적으로 표현하고, 이를 프로그래밍적으로 제어할 수 있도록 브라우저에서 제공하는 트리 구조(tree structure)을 의미웹 문서는 흔히 HTML을 통해 작성되며, 브라우저는 HTML 문서를 해석하여 DOM 트리를 생성함 >> 자바스크립트를 사용하여 DOM 트리를 수정, 선택, 삭제 등 조작이 가능DOM 트리 구조DOM 트리는 태그부터 DOM 예제 이 문서는 DOM 공부를 위한 예제입니다. Document └── html ├── head │ ..
https://www.acmicpc.net/problem/1676문제$ N! $ 에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.입력첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)출력첫째 줄에 구한 0의 개수를 출력한다.풀이$ N! $ 에서 0의 개수는 5의 지수(소인수로서 5가 총 몇번 곱해졌는지)를 확인하면 된다.연속된 0의 개수는 팩토리얼의 소인수 분해에서 10이 몇 번 곱해졌는지에 따라 변화함10은 2와 5가 각각 하나씩 모일 때마다 만들어지기 떄문에 소인수로서 5가 총 몇 개가 있느냐에 따라 결정됨 (2는 모든 짝수의 소인수이기 때문에 소인수로서 2는 5보다 무조건 많을 수 밖에 없음)아래 수식을 코드로 구현하면 해결이 가능함$$ \left\lf..
웹 개발에 필요한 JavaScript 기본 문법에 대해 정리한 글입니다. 기본적으로 다른 언어(C/C++, Java, Python 등)의 문법을 알고 있다는 가정 하에 간략하게 정리하였습니다.자바스크립트의 변수변수 선언var 변수 선언함수 레벨 스코프를 가지는 변수변수를 선언하기 전에 사용하는 경우(변수 선언보다 호출이 앞선 경우)에도 에러가 발생하지 않고 undefined가 할당된 상태로 접근할 수 있음 (호이스팅으로 인한 특징)중복 선언이 가능 >> 같은 스코프 내에서 같은 이름의 변수를 var로 여러 번 선언해도 에러가 발생하지 않고, 마지막으로 선언된 값으로 덮어쓰게 됨ES6(ECMAScript 2015) 이전까지 변수 선언을 위해 주로 사용되었으나, 스코프 및 의도치 않은 재할당 문제로 인해 권..
이 글은 CSS를 이용하여 페이지 레이아웃을 구성하기 위한 기본 속성에 대해 정리한 글이다.CSS 레이아웃CSS에서 레이아웃은 웹 페이지의 요소들을 어떤 방식으로 배치할지 결정하는 개념주요 속성 : display, position, z-index기타 속성 : float, clear, overflow현대 레아아웃 방식 : Flexbox & CSS Griddisplay 속성HTML 요소가 어떻게 배치(렌더링)되느냐를 결정하는 핵심 속성display: block요소가 블록(줄바꿈이 일어다는 단위)으로 배치블록 요소는 가로 영역을 모두 차지하며, 다음 요소가 바로 아래로 내려감width, height, margin, padding 적용 가능대표적인 HTML 요소 : , , ~ 등display: inline요..
이 글은 윈도우 환경에서 Visual Studio Code를 이용한 C++ 개발 환경을 세팅하는 방법에 대해 정리한 글이다.서론왜 VSCode를 사용하는가?오픈 소스가볍고 빠른 속도다양한 확장 기능무료이 외에도 다양한 이유가 존재할 수 있지만, 필자가 생각하기에 가볍고 빠른 속도가 가장 큰 장점인 것 같다. Visual Studio도 사용하기도 하지만, 알고리즘 학습과 같은 학습 과정에서는 VSCode 만큼 괜찮은 프로그램은 아직 찾지 못한 것 같다.시스템 환경현재 필자가 개발 환경을 세팅하는 시점에서, 필자의 노트북에는 Windows 11 Home 24H2 버전이 설치되어 있다.에디션 : Windows 11 Home버전 : 24H2설치 방법1. 컴파일러 설치 (MinGW)MinGW-w64 다운로드 및 ..
CSS 적용 방법인라인 스타일 (inline style)이 문장은 파란색이고, 글자 크기는 20px입니다.HTML 요소의 style 속성을 사용하여 개별적으로 CSS를 적용하는 방법특정 요소에만 스타일을 적용할 때 사용인라인 스타일의 특징특정 요소에 적합한 스타일을 적용스타일을 적용하는 코드가 HTML 문서 내에 존재하기 때문에 유지보수가 어려움CSS 코드가 분리되지 않아 가독성이 떨어짐내부 스타일 (internal style) 이 문장은 빨간색이고, 글자 크기는 18px입니다.HTML 문서의 이 문장은 녹색이고, 글자 크기는 16px입니다..css 파일을 만들어 HTML 문서에 태그를 사용하여 불러오는 방법가장 많이 사용되는 방식이며, 유지보수와 확장성이 뛰어남외부 스타일의 특징여러 HT..
https://www.acmicpc.net/problem/1152문제영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.입력첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다.이 문자열의 길이는 1,000,000을 넘지 않는다.단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다.또한 문자열은 공백으로 시작하거나 끝날 수 있다.출력첫째 줄에 단어의 개수를 출력한다.풀이문자열을 입력받고, 문자열에 포함된 단어의 개수를 세어 출력하면 된다.공백이 포함된 문자열을 받기 위해서 cin 대신 getline 함수 사용공백 한 개만 존재하는 문자열에 ..