본문 바로가기

언어 기초

[요리조리 맛있는 C언어| PART04 연산자] 조건연산자?를 사용하여 최대값, 최소값 구하기 c언어를 공부하면서 java와 비교하여 추가적으로 학습하는 부분을 기록한다. 1. 학습목표 조건 연산자 ? 에 대해 이해할 수 있다. 2.필요 개념 문장정리 조건식 ? 식1 : 식2 첫 번째 피연산자인 조건식이 참이면 ? 뒤에 있는 식을, 거짓이면 : 뒤에 있는 식을 조건연산자의 결과로 취한다. 3. 코드작성 키보드로 3개의 정수를 입력받아 최소값을 출력하는 프로그램을 작성하세요. 단 조건연산자를 사용해서 처리합니다. #include int main() { int a, b, c, min; printf("3개의 정수를 입력하세요 : "); scanf("%d%d%d", &a, &b, &c); min = (a < b) ? a : b; min = (min < c) ? min : c; printf("최소값 : %.. 더보기
[큰돌 C++ 알고리즘 코딩테스트 | 강의 0주차] 조합 조합은 순서에 관계없이 경우의 수를 구해내는 것을 의미한다. 재귀함수를 이용한 조합 재귀함수는 반드시 암기해야 한다. 3자리 이하인 경우에는 중첩for문이 빠를 수 있다. 더보기
[큰돌 C++ 알고리즘 코딩테스트 | 강의 0주차]순열의 개념과 next_permutation 순서와 상관 있게 뽑는다면 순열이다. 순서와 상관 없게 뽑는다면 조합이다. 순열은 순서가 정해진 임의의 집합을 다른 순서로 섞는 연산을 말한다. 문제에서 순서를 재배치하여…, ~한 순서의 경우 max값을 이라면 순열문제이다. next_permutation() 사용시 주의할 점 next_permutation()과 prev_permutation() 두가지 함수중 보통은 next_permutation()을 쓰는데 그 때 배열을 오름차순으로 정렬해서 사용해야 한다. next_permutation()은 새로운 순열이 이전 순열보다 사전순으로 큰 경우 true를 반환하고 마지막 순열에 도달하고 범위가 첫 번째 순열로 재설정된 경우 false를 반환하는 함수이다. 이를 do - while문으로 모든 순열에 해당하는 .. 더보기
[큰돌 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.. 더보기