본문 바로가기

전체 글110

6주차 실습 수업 기록 - 얕은복사, 깊은복사 6주차에는 얕은 복사, 깊은 복사에 대해 실습했다. 많은 학부생들이 얕은 복사, 깊은 복사의 개념에 대해는 대부분 이해했으나 깊은 복사를 실제 구현하는 부분에서 많이 어려워했다. 아래 퀴즈에 대해 구현한 코드를 가지고 깊은 복사에 대해 설명해보고자 한다. MyArray 생성자 함수를 통해 깊은 복사가 되게 만들어야 한다. 즉 생성자 함수에서 파라미터로 들어온 other객체의 멤버변수 값들을 새로운 MyArray객체에 동일하게 옮겨 담아야 한다. MyArray의 size는 int형이므로 다른 작업 필요없이 그냥 옮기고 data는 배열 형태이므로 배열 사이즈 만큼 할당 후 배열 내의 값을 하나씩 옮겨담는 작업을 한다. 이렇게 하면 main 내의 코드는 동일해도 생성자 함수를 수정해주었기 때문에 깊은 복사가 .. 2024. 4. 14.
5주차 실습수업 기록 - 연산자 오버로딩 퀴즈 11. 입출력 연산자 오버로딩을 구현하는 걸 많은 학부생들이 어려워했다. 그래서 iclass에 입출력 연산자 오버로딩에 대해 글을 남겨논 글이 있는데 연산자 오버로딩을 이해하는데 어려움이 있는 다른 분들께 공유하고자 한다. c++에서 자주 쓰는 cin,cout은 iostream라이브러리에 구현된 연산자 오버로딩을 사용하는 것입니다. cout을 예로 들어보겠습니다. cout은 ostream클래스의 객체이고 ostream클래스는 출력을 수행하는 클래스입니다. ostream 클래스 안에는 여러 자료형 타입에 대한 >(istream& is,Power& p) { char left_parenthesis, right_parenthesis, comma; is >> left_parenthesis >> p.kick .. 2024. 4. 14.
4주차 실습수업 기록 - 멤버변수, 프렌드 함수 퀴즈1. 이 문제는 Employee 클래스 내부에 들어있는 birthDate(생일)와 hireDate(고용년도)를 이용하여 나이를 구해야하는 문제이다. birthDate, hireDate 모두 Date클래스이므로 Date 클래스의 year 멤버변수를 얻어와 구하면 되는데 학부생들이 private한 멤버변수를 함수를 통해서가 아닌 멤버변수 그대로 얻어와 사용하려고 하여 에러가 발생했었다. 클래스 내에 private을 사용하는 이유, private한 멤버변수는 함수를 통해서 얻는 방법등을 알려주었다. #pragma once #ifndef EMPLOYEE_H #define EMPLOYEE_H #include #include"Date.h" class Employee { public: Employee(const .. 2024. 4. 14.
3주차 실습수업 기록 - 예외처리 인하대 객체지향 프로그래밍 수업 조교를 맡으면서 실습시간에 학부생들이 어려워했던 내용 위주로 정리해논 ppt가 있어 공유하고자 한다. 해당 문제는 특정 조건을 만족하지 않을 경우 예외처리를 해주는 코드를 구현해야 한다. 많은 학부생들이 예외를 발생시키고 처리하는 로직 구현하는 걸 처음에 많이 어려워했던 것 같다. 먼저 Triangle 클래스를 구현하고 예외를 처리하는 과정을 설명해놓았다. 2024. 4. 14.
프로그래머스 - 택배상자 (파이썬) 스택과 큐 사용 def solution(order): answer = 0 i_order=0 #현재 orderd의 인덱스 i_que=0 #큐의 앞에 값을 하나씩 없애면 시간복잡도 O(n)이기 때문에 값 없애지 않고 인덱스 증가시킴 que=[] stack=[] for i in range(1,len(order)+1): que.append(i) while i_order 2024. 4. 14.
프로그래머스 - 숫자변환하기 (파이썬) 이 문제는 범위에 제한이 있어야 풀리는 문제이다. dfs나 bfs를 사용하면 depth, width가 무한정 커질 수 있기 때문에 배열을 사용하여 범위에 제한을 두고 for문을 돌려야 한다. 1. dfs 사용(x) answer=1000000 def dfs(x,n,y,tot,cnt): global answer if tot>=x: if tot==x: answer=min(answer,cnt) return if tot%3==0: dfs(x,n,y,tot//3,cnt+1) if tot%2==0: dfs(x,n,y,tot//2,cnt+1) dfs(x,n,y,tot-n,cnt+1) def solution(x, y, n): global answer dfs(x,n,y,y,0) if answer==1000000: retu.. 2024. 4. 14.