jo식이야기
본문 바로가기
반응형

전체 글76

객체 프로그래밍 ( 저번시간에는 클래스의 개념에 대해서 배웠습니다. 이번시간에는 클래스의 응용을 배워보도록 하겠습니다. 1. 객체를 바로 함수의 인자를 사용하는 것은 call by value, 객체의 주소를 사용하는 것이 call by reference입니다. 그런데 객체 자체의 멤버의 수가 매우 많다면 당연히 함수 호출이 지연됩니다. 이러한 경우는 객체의 포인터를 넘기는 과정, 즉 객체의 주소만 전달됩니다. 이렇게 해도 속도 향상을 시킬 수 있습니다. 2. 객체를 생성할 때 동작을 기록하는 역할을 하는 것을 생성자라고 하며 생성자를 정의해두면, 클래스로부터 객체가 생성될 때 자동적으로 호출되는 특수한 멤버 함수입니다. 그래서 생성자는 일반적으로 처음에 초기화를 해줄 때나 무조건 처음에 출력해야 하는 문장이 있을 때 출력하.. 2024. 3. 8.
객체 프로그래밍 C++ (클래스 개념) 이번 시간에는 클래스를 배워보겠습니다. 함수와 마찬가지로 복잡한 프로그램의 작업효율 향상을 위해 만들어진 것으로 클래스를 통해 중복하여 사용할 것을 하나로 통합시킬 수 있습니다. 클래스 설명 1. 클래스안에는 멤버 변수와 멤버 함수, 접근 지정자로 이루어져 있습니다. 2. 일반적으로 함수를 선언을 클래스 안에서 해주고, 정의는 클래스 바깥에서 해줍니다. 3. 클래스를 써줄 때는 클래스 이름을 써주고 ::을 함수의 자료형과 함수명 사이에 써줘야합니다. 4. 만들어진 클래스의 멤버 변수 또는 멤버 함수에 접근하기 위해서는 도트연산자(.)을 사용합니다. 5. 클래스를 통해서 만들어진 것을 객체 또는 인스턴스를 선언했다고 포현하고, 클래스 안의 멤버변수에 값을 대입하고, 클래스 안의 멤버 함수를 호출해서 사용을.. 2024. 3. 8.
객체 프로그래밍 C++ (gets, puts, strncat, strncpy) 저번 시간에는 스트링 라이브러리에 있는 함수들을 배웠고, 그 함수들의 예제를 공부해봤습니다. 이번 시간에는 더 다양한 함수들을 배워보겠습니다. 1. gets, puts gets는 빈칸, tab을 포함한 새로운 문자열 입력 방식으로 엔터 전까지 모두 입력 받게 됩니다. cin과 다른 점은 띄어쓰기까지 받아낸다는 것입니다. puts는 gets와 짝을 이루어 문자열을 출력하는 함수로 문자열 출력 후 자동으로 줄을 바꾸어줍니다. 그런데 이런 gets가 c++ 최신 버전에는 삭제가 되었습니다. https://www.zinnunkebi.com/c-gets-fgets/ C언어 gets함수를 사용해서는 안되는 이유 gets함수는 읽어들이는 문자열의 길이를 지정하지 않기때문에 문자열을 저장하는 메모리 버퍼의 크기보다 더.. 2024. 3. 7.
1940번 난이도:실버 4 (주몽의 명령) https://www.acmicpc.net/problem/1940 1940번: 주몽 첫째 줄에는 재료의 개수 N(1 ≤ N ≤ 15,000)이 주어진다. 그리고 두 번째 줄에는 갑옷을 만드는데 필요한 수 M(1 ≤ M ≤ 10,000,000) 주어진다. 그리고 마지막으로 셋째 줄에는 N개의 재료들이 가진 고 www.acmicpc.net 풀이과정 1 1. 일단 받을 재료의 수, 갑옷이 완성되는 번호의 합을 입력받는다. 그리고 재료들을 입력받는다. 2. 재료들을 정렬을 해주어야한다. 그 다음에 시작인덱스와 끝인덱스를 정해서 완성되는 번호의 합이 몇개가 나오는지 출력하면 된다. 3. 정렬은 알고리즘 헤더파일의 sort 정렬을 이용하자 4. 시작인덱스를 고정시키고, 끝 인덱스를 뒤에서부터 시작인덱스까지 이동시키.. 2024. 3. 7.
2018번 난이도:실버 5(연속된 자연수의 합 구하기)-투 포인터 이 문제의 시간 제한은 2초, N의 최댓값은 100000000이므로 제한 시간을 맞추기 위해서 투 포인트를 사용해야 합니다. 시작 인덱스와 종료 인덱스를 지정하여 연속된 수를 표현해보자 풀이 방식을 두 가지 정도 생각해보았습니다. 첫번째 풀이 방식 1. 시작인덱스부터 종료 인덱스까지 탐색하면서 합이 N이 될 때를 카운트한다. 2. 만약 sum하고 N 값이 같을 때는 종료 인덱스를 더 큰 쪽으로 한 칸 옆으로 보내고, sum값을 바뀐 종료 인덱스를 더 한 값으로 초기화한다. 그리고 count도 시켜준다. 3. 만약 sum보다 N이 작을 때는 종료 인덱스를 더 큰 쪽으로 한 칸 옆으로 보내고, sum값을 바뀐 종료 인덱스를 더 한 값으로 초기화한다. 4. 만약 sum이 N보다 작다면 sum에서 시작인덱스 값.. 2024. 3. 7.
객체 프로그래밍 C++ (스트링 응용 strlen, strcpy, strncpy, strcpy) 앞에서 문자열 배열과 포인터 배열을 통해서 문자열을 어떻게 나타내고 두 개의 차이가 무엇인지 배웠습니다. 이번 시간에는 이같이 문자열을 쓸 때마다 배열을 쓰지 않고 편하게 쓸 수 있는 방법을 알려드리도록 하겠습니다. 그리고 활용법도 같이 알려주도록 하겠습니다. 만약 문자열을 편하게 사용하려면 스트링 라이브러리를 가져와야 됩니다. #include을 먼저 처음에 써줍니다. 이제부터 string 라이브러리에 있는 내장함수(?)들을 하나씩 알려드리겠습니다. 1. strlen(문자열 길이 계산) 만약 이 함수를 사용하지 않고 문자열의 길이를 계산한다면 개행 문자가 나올 때까지 이동시키고 계산해주는 코드를 짜야됩니다. 그러나 이 함수를 사용하면 한 번에 문자열 길이를 계산할 수 있습니다. 이런식으로 strlen(배.. 2024. 3. 6.
반응형