본문 바로가기

언어 기초

[큰돌 C++ 알고리즘 코딩테스트 | 강의 0주차] 재귀함수(recursion) 재귀함수 재귀함수(Recursion)는 정의 단계에서 자신을 재참조하는 함수 전달되는 상태인 매개변수가 달라질 뿐 똑같은 일을 하는 함수 큰 문제를 작은 부분문제로 나눠서 풀 때 사용합니다. 재귀함수 사용시 주의사항 반드시 기저사례를 써야 한다. (종료조건) if(n == 1 || n == 0) return 1; 사이클이 있다면 쓰면 안된다. ex) f(a)가 f(b)를 호출한 뒤 f(b)가 다시 f(a)를 호출하는 것 반복문으로 될 거같으면 반복문으로. (함수호출에 대한 코스트가 든다.) 팩토리얼과 피보나치에서의 활용 더보기
[큰돌 C++ 알고리즘 코딩테스트 | 알고리즘 교안] 공부환경세팅 및 시작 VSCode를 사용하여 학습합니다. MacOS에서 C++ 표준 라이브러리를 포함하는 헤더인 bits/stdc++.h를 사용하기 위한 세팅을 합니다. cd /usr/local/include mkdir bits cd bits vi stdc++.h 편집기에 a를 눌러 다음 코드를 넣어줍니다. https://raw.githubusercontent.com/wnghdcjfe/wnghdcjfe.github.io/master/bits/stdc++.h 코드는 직접 치면서 연습합니다. 필요 개념 문장정리 헤더파일을 include 합니다. bits/stdc++.h는 C++의 모든 표준 라이브러리가 포함된 헤더파일입니다. 네임스페이스란 많은 라이브러리를 불러서 사용하다보면 변수명 중복이 발생할 수 있는데 이를 방지하기 위해서.. 더보기
[자바의정석 | Chapter 07 객체지향 프로그래밍2] 오버라이딩 1. 학습목표 오버라이딩의 의미를 이해할 수 있다. 2.필요 개념 문장정리 오버라이딩 조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것을 오버라이딩이라고 한다. 오버라이딩은 메서드의 내용만을 새로 작성하는 것이므로 메서드의 선언부는 조상의 것과 완전히 일치해야 한다. 접근제어자는 조상클래스의 메서드보다 좁은범위로 변경 할 수 없다. 조상 클래스의 메서드보다 많은 수의 예외를 선언할 수 없다. 인스턴스메서드를 static메서드로 또는 그 반대로 변경할 수 없다. 3. 코드작성 class Point { int x; int y; String getLocation(){ return "x : " + x + ", y :" + y; } } class Point3D extends Point { int z; Str.. 더보기
[자바의정석 | Chapter 07 객체지향 프로그래밍2] 상속 1. 학습목표 상속의 의미에 대해 이해할 수 있다. 2.필요 개념 문장정리 상속 상속은 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 부모의 필드, 메서드, 클래스를 받을 수 있다. 상속을 받는다는 것은 조상클래스를 확장한다는 의미로 해석할 수도 있다. 상속의 장점은 코드의 중복을 제거하는 것도 있지만 다형적인 표현을 가능하게 한다는것이 가장 큰 장점이다. 다중상속은 불가능하지만 자식클래스는 여러개가 가능하다. 자식 객체가 생성되면 부모 객체부터 생성되고 추가로 정의된 객체가 저장된다. 부모의 생성자는 상속되지 않는다. 3. 코드작성 class Tv { boolean power; // 전원상태(on/off) int channel; //채널 void power (){ power = !powe.. 더보기
[자바의정석 | Chapter 06 객체지향 프로그래밍1] 변수의 초기화 1. 학습목표 변수의 초기화를 통해 클래스 사용을 이해할 수 있다. 2.필요 개념 문장정리 변수의 초기화 변수를 선언하고 처음으로 값을 저장하는 것을 변수의 초기화라고 한다. 멤버변수(클래스변수와 인스턴스변수)와 배열은 초기화는 선택적이지만 지역변수의 초기화는 필수적이다.연산자 new가 인스턴스를 생성하는 것이지 생성자가 인스턴스를 생성하는 것이 아니다. 멤버변수의 초기화 방법 명시적 초기화 생성자 초기화블럭 클래스 초기화 블럭은 클래스가 메모리에 처음 로딩될 때 한번만 수행되며 인스턴스 최기화 블럭은 생성자와 같이 인스턴스를 생성할 떄 마다 수행된다. 생성자보다 인스턴스 초기화 블럭이 먼저 수행된다. 3. 코드작성 class StaticBlockTest { static int[] arr = new in.. 더보기
[자바의정석 | Chapter 06 객체지향 프로그래밍1] 인스턴스의 복사 1. 학습목표 인스턴스의 복사를 통해 생성자의 사용을 이해할 수 있다. 2.필요 개념 문장정리 현재 사용하고 있는 인스턴스와 같은 상태를 갖는 인스턴스를 하나 더 만들고자 할 때 생성자를 사용할 수 있다. 두 인스턴스가 같은 상태를 갖는다는 것은 두 인스턴스의 모든 인스턴스 변수가 동일한 값을 갖고 있다는 것을 뜻한다. Car클래스의 참조변수를 매개변수로 선언한 생성자이다. 매개변수로 넘겨진 참조변수가 가리키는 Car인스턴스의 인스턴스변수인 color, gearType, door의 값을 인스턴스 자신으로 복사하는 것이다. 어떤 인스턴스의 상태를 전혀 알지 못해도 똑같은 상태의 인스턴스를 추가로 생성할 수 있다. 3. 코드작성 class Car { String color; String gearType; .. 더보기
[자바의정석 | Chapter 06 객체지향 프로그래밍1] 생성자 1. 학습목표 생성자에 대해 이해할 수 있다. 2.필요 개념 문장정리 생성자 생성자는 인스턴스가 생성될 때 호출되는 인스턴스 초기화 메서드이다. 인스턴스초기화란 인스턴스변수들을 초기화하는 것을 뜻한다. 생성자 역시 메서드처럼 클래스 내에 선언되며 구조도 메서드와 유사하지만 리턴값이 없다는 점이 다르다. 1.생성자의 이름은 클래스의 이름과 같아야한다. 2.생성자는 리턴값이 없다. 연산자 new가 인스턴스를 생성하는 것이지 생성자가 인스턴스를 생성하는 것이 아니다. 생성자는 단순히 인스턴스변수들의 초기화에 사용되는 메서드일 뿐이다. card c = new Card(); 연산자 new에 의해서 메모리에 Card클래스의 인스턴스가 생성된다. 생성자 Card()가 호출되어 수행된다. 연산자 new의 결과로 생성된.. 더보기
[자바의정석 | Chapter 06 객체지향 프로그래밍1] 오버로딩 1. 학습목표 오버로딩에 대해서 이해할 수 있다. 2.필요 개념 문장정리 오버로딩 자바에서는 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있더라도 매개변수의 개수 또는 타입이 다르면 같은 이름을 사용해서 메서드를 정의할 수 있다. 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 메서드 오버로딩이라 한다. 오버로딩은 메서드 이름이 같아야하고 매개변수의 개수 또는 타입이 달라야 한다. 반환 타입은 오버로딩을 구현하는데 아무런 영향을 주지 못한다. 매개변수의 이름만 다르고 매개변수의 타입이 같으면 오버로딩은 성립하지 않는다. 매개변수와 개수는 일티하고 리턴타입만 다르면 오버로딩은 성립하지 않는다. 매개변수의 순서가 다른경우는 오버로딩으로 간주한다. 정의된 매개변수가 서로달라도.. 더보기