[자료구조] #5 Stack(1)
·
CS/자료구조
• Stack 스택은 말 그대로 '쌓아놓은 더미'를 뜻한다. 스택의 가장 큰 특징은 'LIFO'(Last In First Out) 이다. 다시 말해, 가장 최근에 들어온 데이터가 가장 먼저 나간다는 의미이다. 스택의 연산은 top(상단)에서만 진행된다. 주요 연산자 push : 삽입 연산 pop : 삭제 연산(삭제&반환) • Function call stack 반복적으로 함수를 호출하는 무한 루프가 있는 경우 스택 오버플로우가 발생할 수 있다. • 부가연산자 peek() : 스택의 맨 위에 있는 데이터를 제거하지 않고 반환한다. empty() : 할당된 공간에 삽입된 아이템이 없을 때 반환한다. / 아이템이 한개라도 있으면 false. full() : 할당된 공간이 모두 채워졌을때 반환한다. / 공간이 ..
[자료구조] #4 C++ 문법(2)
·
CS/자료구조
• OOP(Object-Oriented Programming) 객체 지향 프로그래밍 '객체 관점'으로 데이터와 함수를 동시에 관리할 수 있다. 데이터와 함수가 서로 떨어져 있으면 생산성이 떨어지기 때문에 하나로 합치기 위해 우리는 객체 지향 프로그래밍을 알아야 한다! • 클래스를 정의하는 방법 class 키워드를 이용해 클래스를 정의한다. 클래스에는 멤버 점근자가 포함된다. 1. private : 외부 접근 불가능 2. protected(상속) : 상속 구조 상황에서의 접근지정자 3. public : 외부와 내부 모두 접근 가능 일반적으로 데이터는 일관성 유지와 개발자가 의도한 방향성을 위해 private, 메소드는 외부에서 함수를 호출하기 위해 public이 사용된다. class Name { // Na..
[컴퓨터구조] #3 정수표현법
·
CS/컴퓨터구조
• 정보를 어떻게 표현할까? 정보 = 비트 + 비트가 의미하는게 뭔지이진 숫자로 정보를 표현한다.2진수 N비트 = 2^N 경우의 수  •  Unsigned Integers(부호없는 정수형) 음수표현이 불가능하다.  • Signed Integers(부호가 있는 정수형) 양의 정수와 음의 정수 표현이 모두 가능하다.Positvie numbers(양수)는 Unsigned Integers와 동일하지만Negative numbers(음수)는 3가지 표현법을 이용해 표현할 수 있다.  공통 : 첫번째 비트는 부호를 표현하고, 나머지 비트로 크기를 표현한다.(첫번째 자리 0 : 양수 / 1 : 음수) 1. Sign-magnitude Representation(부호-크기 표현법)0..
[객체지향프로그래밍] #2 자바 기본 프로그래밍(2)
·
CS/객체지향프로그래밍
• System in키보드부터 직접 읽는 자바의 표준 입력 스트림이다.하지만 응용프로그램이 받은 바이트 정보를 문자나 실수로 변환해야 하는 번거로움이 있다.따라서 문자나 정수, 실수, 문자열 등 사용자가 원하는 타입으로 변환해주는 Scanner 클래스를 사용하는 것이 효과적이다.  • Scanner를 이용한 키 입력우선 다음과 같이 Scanner 객체를 생성한다.Scanner scanner = new Scanner(System.in); // Scanner 객체 생성 Scanner를 사용하기 위해서는 프로그램 맨 앞줄에 다음 import 문이 필요하다.import java.until.Scanner; Scanner 클래스는 사용자가 입력하는 키 값을 공백 문자를 기준으로 분리하여 토큰 단위로 읽는다. Sca..
[자료구조] #3 C++ 문법(1)
·
CS/자료구조
• 입력과 출력을 C와 C++에서 정의하는 방식 C C++ Header #include #include Input scanf() std::cin >> Output printf() std::cout num; // 입력 받은 정수 출력 std::cout
[객체지향프로그래밍] #1 자바 기본 프로그래밍(1)
·
CS/객체지향프로그래밍
전공교재인 '명품 Java 프로그래밍'을 바탕으로 정리한 내용입니다. 명품 JAVA Programming (개정4판) | 생능출판사명품 자바를 사랑해주시는 많은 교수님들과 독자들께 감사드립니다. 2017년 7월에 개정3판이 나오고, 두 달도 지나지 않아 Java 9가 출시되었습니다. 그리고 급기야 올해 3월에는 Java 10이 출시되었www.booksr.co.kr public class Hello { public static int sum(int n, int m) { return n + m; } // 메소드 1// main() 메소드에서 실행 시작 public static void main(string[] args) { int i = 20; int s; char a; s = sum(i, 10);..
[자료구조] #2 알고리즘 분석(2)
·
CS/자료구조
1. Big-O Notation Big-O Notaion은 Worst Case에 대한 상한을 제시하여 주어진 입력 크기에 대해 알고리즘이 Big-O로 표현된 함수보다 더 나빠질 수 없다는 것을 의미한다. 즉, 우리가 관심있는 시간복잡도가 Big-O 집합 안에 속해야 한다. (작게 수행되어야 한다.) 정의를 이용해서 어떤 시간복잡도가 Big-O에 속하는 것을 증명하는 문제가 자주 출제되는데, 이때 우리는 상수C와 n0를 찾아야 한다. 예를 들어 T(n) = 5n²이고 이때 T(n) ∈ O(n²)이라면, C(T(n)의 상수라고 가정)는 6, n0는 1이 되어야 한다.(여러 정답중 1개) Basic Operation에서 n0가 1일때 보통 '상수시간 걸린다' 라고 한다. • Tight Bound & Loose..
[컴퓨터구조] #2 성능
·
CS/컴퓨터구조
• 컴퓨터에서 성능을 평가하는 방식 여러가지가 존재하지만 대부분의 성능 평가 기준은 시간과 관련이 있다.(실행시간이 얼마나 빠른지) • 시간 측정 방법• Clock Frequency 시스템 내의 Clock 신호가 발생하는 속도를 나타낸다.아래는 단위를 정리한 표이다.Giga10⁹Mega10⁶Kilo10³Milli10⁻³Micro10⁻⁶Nano10⁻⁹  • Clock Cycle Time Clock 신호가 0 -> 1 -> 0 또는 1 -> 0 -> 1로 변하는데 걸리는 시간 Clock Cycle Time은 Positive 또는 Negative edge 사이의 시간이라고 할 수 있다.  • Clock Rate Clock C..
[자료구조] #1 알고리즘 분석(1)
·
CS/자료구조
• 알고리즘 알고리즘 : Input(입력)에서 Output(출력)으로 가는 논리적인 절차 • 알고리즘 표현 방식 Natural language(자연어) : 일상적인 언어로 표현Pseudo-code(슈도 코드) : 유사 코드(자연어와 프로그래밍 언어를 적절하게 섞는다.)Programming language(C++) • 알고리즘의 효율성 어떤 알고리즘이 가장 효율적일까? : 빠르면서 가벼운 것이 가장 효율적이다! 그렇다면 가장 효율적인 것을 판단해내기 위한 방법은 무엇일까? 자원측정법 : Time(시간), Space(공간) Empirical(정량적인 시간) : 실제로 재는 것을 의미한다. - 장점 : 실질적인 수치를 가지고 비교가 가능하다. - 단점 : 환경에 따라서 달라지며, 실제로 실험하지 않는 이상 모..
[컴퓨터구조] #1 컴퓨터구조
·
CS/컴퓨터구조
• 컴퓨터구조란? 컴퓨터구조(Computer Architecture)는 컴퓨터 시스템의 기본적인 구조와 동작원리를 배우는 과목이다.그렇다면 소프트웨어 전공자인 내가 왜 하드웨어를 배워야하는 것일까? 교수님의 말씀에 따르면, 하드웨어에 대한 높은 이해도를 가지게 되면 더 최적화된 프로그램을 만들 수 있다고 하셨다! 그럼 컴퓨터구조의 기초에 대해 알아보도록 하자.  • 폰노이만 구조CPU(중앙 처리 장치) : 프로그램을 실행하고 데이터를 처리하는 핵심 부품Memory(메모리) : 프로그램과 데이터가 저장되는 곳(폰노이만 구조에서는 프로그램 코드와 데이터가 동일한 메모리에 저장된다.)Control Unit(제어 유닛) : 명령어를 해독하고 실행하는 역할 담당Arithmetic/Logic Unit(산술 논리 장..