C++ programming
동적할당
#include<iostream> #include<string.h> #include<stdlib.h> using namespace std; char * makestradr(int len) { char* str = (char*)malloc(sizeof(char) * len); return str; } int main(void) { char* str = makestradr(20); strcpy(str, "I am so happy~"); cout << str << endl; free(str); return 0; }
구조체
#include<iostream> #include<stdio.h> using namespace std; struct human { char name[20]; int age; }; int main() { struct human h = { "홍길동", 23 }; cout << "이름:" << h.name << endl; cout << "나이:" << h.age << endl; return 0; }
구조체 + 함수
#include<iostream> using namespace std; #define id_len 20 #define max_spd 200 #define fuel_step 2 #define acc_step 10 #define brk_step 10 struct Car { char gamerid[id_len];//소유자id int fuelgauge;//연료량 int curspeed;//현재속도 }; void showcarstate(const Car& car) { cout << "소유자ID " << car.gamerid << endl; cout << "연료량 " << car.fuelgauge <<"%" << endl; cout << "현재속도 " << car.curspeed<<"km/s" << endl << endl; } void accel(Car& car) { if (car.fuelgauge <= 0) return; else car.fuelgauge -= fuel_step; if (car.curspeed + acc_step >= max_spd) { car.curspeed = max_spd; return; } car.curspeed += acc_step; } void Break(Car & car) { if (car.curspeed < brk_step) { car.curspeed = 0; return; } car.curspeed -= brk_step; } int main(void) { Car run99 = { "run99",100,0 }; accel(run99); accel(run99); showcarstate(run99); Break(run99); showcarstate(run99); Car sped77 = { "sped77",100,0 }; accel(sped77); Break(sped77); showcarstate(sped77); return 0; }
Class
#include<iostream> using namespace std; class Myclass { private://외부접근 불가 int private_val; public ://외부접근 가능 int public_val; protected://상속시에만 접근가능 int protected_val; public: void set(int num) // 클래스 내부 private값 접근 위함 { private_val = num; } void get() { cout << public_val << endl; cout << private_val << endl; } }; int main() { Myclass o; o.public_val = 100; o.set(1000); o.get(); }
private으로 선언한 변수 접근 시 class 내부에 함수를 만들어서 해당 변수에 접근해야만 하는점 유의
프로그래머스
피자 나눠 먹기(2)
최소공배수 이용해서 풀고싶은데 프로그래머스는 버전이 3.8.5로 되어있고 math 모듈에서 lcm 사용은 3.9버전부터 가능해서 소스코드 제출은 불가능
def solution(n): import math answer=math.lcm(n,6)//6 return answer solution(4)
1) 문제를 반복해서 읽어보니 사람수와 6의 최소공배수를 구하면 되는 문제였음
2) math 모듈의 lcm함수를 이용해서 math.lcm(x,y) -> x,y의 최소공배수 구해짐
3) 다음과 같이 편하게 풀 수 있는데 프로그래머스는 파이썬 버전 3.8.5를 지원하고 해당 모듈은 3.9버전 부터 사용 할 수 있어서 소스코드 제출은 못함