[Algorithm] DFS 정리
·
Algorithm/Study
1. DFS란? - DFS 는 깊이 우선 탐색 을 말합니다. - 루트 노드에서 시작하여, 해당 노드들의 자식을 우선적으로 탐색합니다. * 미로찾기로 예시를 들면, 한 방향으로 갈 수 있을 때까지 계속 가다가 더이상 갈 수 없게 되면 다시 가까운 갈림길로 되돌아 와서 다시 탐색을 진행하는 것과 유사합니다. Q. 깊이우선 탐색을 하면 순서가 어떻게 될까요? A. 0-1-3-4-2-5-6 1) 특징 > 모든 노드를 탐색할 때 좋은 방법입니다. > BFS보다 좀 더 간단하지만 느립니다. 2) 알고리즘 구현 방법 DFS의 결과 : 1 - 2 - 3 - 5 - 4 -6 ⓐ 재귀함수 이용 #include #include using namespace std; bool visited[10]; //방문했던 노드를 기억하는..
Power java 2판 - Chapter 2 exercise
·
Major/Java
Power java 2판 - Chapter 2.. : 네이버블로그 (naver.com) Power java 2판 - Chapter 2 exercise 중간고사를 보고나서야 자바공부를 다시해야겠다는 생각이 많이들었다.처음부터 정리하면 뭐라도 되겠지라... blog.naver.com ​ 1. 바이트 코드 ​ ​ 2. C:\Program Files\Java ​ ​ 3. path 환경변수를 변경해주어야 한다.(jdk bin 폴더 추가) ​ ​ 4. 1) c:\>javac MyProgram.java -> class파일 생성됨 2) c:\>java Myprogram ​ 5. 파일 명을 제대로 입력했는 지 확인 ​ ​ 6. 컴파일 할때 javac HelloWorld.java ① 대소문자 를 구분하여 입력 ② .jav..
[2020] Cuk Class_가대 강의실 시간표
·
회고 | 후기
Cuk Class - 가대 강의실 시간표 - Google Play 앱 Cuk Class - 가대 강의실 시간표 - Google Play 앱 가톨릭대학교의 각 강의실 별로 일주일 단위의 시간표를 제공하여 대실을 원하는 동아리나 개인에게 편리성을 제공하는 애플리케이션입니다. play.google.com 1. 사용 목적 - 학교 강의실 별 시간표를 제작하여, 학생들이 빈 강의실을 이용할 수있게 함 2. 구성 화면 3. 과정 백엔드 : 2명 프론트엔드 : 2명 나의 역할 : 프론트엔드(안드로이드 스튜디오 앱 제작) 📃 만든 화면 : 1(스플래시화면), 2(건물 별 화면), 5(시간표 화면) 4. 어려웠던 점 안드로이드 스튜디오를 공부할 때 주로 xml상에서만 작성을해서 동적으로 java코드를 짜는 것이 익숙치 ..
[운영체제] CH1 컴퓨터 시스템의 소개 *
·
Major/OS
#그림으로 배우는 구조와 원리 운영체제(개정 3판) 책을 기반으로 작성하였습니다. 01 컴퓨터 하드웨어의 구성 - 컴퓨터 시스템은 물리적인 기계장치인 하드웨어와 명령어로 작성한 소프트웨어로 구성된다 1. 프로세서 : 컴퓨터 하드웨어에 부착한 모든 장치의 동작을 제어, 명령을 실행 - 프로세서는 연산장치, 제어장치, 레지스터로 구성되며 내부버스로 연결한다. 1) 레지스터 ① 구분 > 용도에 따라 : 전용레지스터 / 범용레지스터 > 자가정보 변경가능 여부 : 사용자 가시레지스터/ 사용자 불가시 레지스터 > 저장하는 정보의 종류에 따라 : 데이터 레지스터/ 주소레지스터/ 상태 레지스터 2) 메모리 - 메모리 계층 구조 ⓐ 레지스터 : 프로세서 내부에 있으며 프로세서가 사용할 데이터를 보관하는 가장 빠른 메모리..
[C++] 2309 일곱 난쟁이
·
Algorithm/Solution
2309번: 일곱 난쟁이 (acmicpc.net) 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 난이도 : 브론즈2 풀이 과정 : 전형적인 완전 탐색 문제입니다. 저는 9명의 난쟁이의 키를 배열로 입력받아서 모두 더한다음 2명을 빼서 키의 합이 100이되는 경우의 수를 다 탐색해보는 방법으로 풀었습니다. 2명을 빼는 방법은 이중반복문을 이용해서 모든 경우의 수를 다 탐색할 수있게 합니다. 그리고 오름차순으로 출력해야 하기 때문에 입력받은다음 바로 정렬해줬습니다. 코드 : #include #include using n..
[Algorithm] 완전탐색
·
Algorithm/Study
1. 완전탐색 1) 개념 : 말 그대로 가능한 모든 경우의 수를 다 탐색하는 것 2) 방법 ⓐ 브루트 포스(Brute-Force) : 영어를 번역하면 무차별 대입이라는 뜻이다. ⓑ 비트마스크(BitMask) : 이진수를 사용하는 컴퓨터의 연산 방식을 이용하여, 정수의 이진수 표현을 자료 구조로 쓰는 기법 ⓒ 순열 ⓓ BFS(너비우선탐색) ⓔ 백트래킹 : DFS에 가지치기를 통해 가도되지 않는 루트는 고려하지 않고 탐색하는 완전탐색 기법 2. 해결방법 1) 주어진 문제를 선형 구조로 구조화 2) 구조화된 문제공간을 적절한 방법으로 해를 구성할 때까지 탐색 3) 구성된 해를 정리 EX) 10의 약수구하기 - 10의 약수가 될 수있는 모든 자연수를 구조화 (1,2,3,4,5,6,7,8,9,10} - 탐색을 이..
[Algorithm] 시간복잡도 이해하기
·
Algorithm/Study
1. 시간복잡도 1) 의미 : 알고리즘이 동작하는데 걸리는 시간을 대략적으로 나타냄 🔎 코드는 최대한 간결하고 빠르게 작동하는 것을 원칙으로 한다. 2) 표기법 ⓐ O(Big O) : 시간의 상한 값(최악의 성능일 때 걸리는 시간) ⓑ θ(theta) : 오와 오메가의 중간(평균) ⓒ Ω(omega) : 시간의 하한 값(최고의 성능일 때 걸리는 시간) - 보통 빅 O표기법을 씀 이유 : 알고리즘이 최악일 때 어떤 성능을 지녔는지 판단해야 사용유무를 판단할 수 있기 때문! (어떠한 알고리즘이 최소 1의 속도가 걸린다고 해도 최악의 경우 N속도가 걸리면 무의미 함) 3) 대표적인 시간복잡도 - O(1) : 상수 시간 : 입력값 n 이 주어졌을 때, 알고리즘이 문제를 해결하는데 오직 한 단계만 거칩니다. - ..
Web과 HTML
·
Frontend/Study
1. Web(www=world wide web) - 웹이란 1개 이상의 사이트가 연결되어 있는 인터넷 서비스의 한가지 형태 - 인터넷이란 1개 이상의 네트워크가 연결되어 있는 형태 1) 용어 ⓐ 프로토콜 : 네트워크상에서 약속한 통신규약(html, ftp, smtp, pop, dhcp) ⓑ IP : 네트워크 상에서 컴퓨터를 식별할 수 있는 주소(192.168.**) ⓒ DNS : IP주소를 인간이 쉽게 외울 수 있도록 맵핑한 문자열(naver.com) ⓓ Port : 해당 컴퓨터의 구동되고 있는 프로그램을 구분할 수 있는 번호(기본 포트 : 80) 2. HTML(hyper text markup language) - 웹문서를 기술하기 위한 언어 3. CSS(Cascading style sheets) - h..
[C언어 복습] 포인터(배열포인터, 포인터배열)
·
Major/C&C++
배울 때 엄청 헷갈렸던 포인터...(사실 지금도 헷갈림) 1. 포인터 1) 의미 : 변수의 주소를 저장하는 변수 #include int main() { int *numPtr; // 포인터 변수 선언 int num1 = 10; // int형 변수를 선언하고 10 저장 numPtr = &num1; // num1의 메모리 주소를 포인터 변수에 저장 printf("%p\n", numPtr); // 0055FC24: 포인터 변수 numPtr의 값 출력 // 컴퓨터마다, 실행할 때마다 달라짐 printf("%p\n", &num1); // 0055FC24: 변수 num1의 메모리 주소 출력 // 컴퓨터마다, 실행할 때마다 달라짐 return 0; } //출처 : (c언어코딩도장)dojang.io/mod/page/vi..