
내배캠에서 알고리즘 코드카타를 한다는 걸 어제 저녁에 처음 알게되어서 오늘 오전에 10번까지 제출했다.
#include <string>
#include <vector>
using namespace std;
int solution(int n) {
int answer = 0;
for(int i=1; i <= n/2; i++){
answer += 2*i;
}
return answer;
}
#include <string>
#include <vector>
using namespace std;
double solution(vector<int> numbers) {
double answer = 0;
for(int i=0; i<numbers.size(); i++){
answer+=numbers[i];
}
return answer/numbers.size();
}
전위연산 ++a / 후위연산 a++ 차이
int a = 1;
int b = 0;
b = ++a; // b=2, a=2
b = a++; // b=2, a=3
C/C++에서 0은 False 나머지는 대부분 True
: 모든 비트가 0이면 False 아니면 True
배열은 통째로 복사 및 대입이 불가능함. 개별 원소는 가능
포인터
: int* ptr 포인터 변수. 주소값을 저장함
ptr = &num // num의 주소
*ptr=100 // ptr의 주소로 가서 값을 100으로 바꿔라-> num=100;
배열의 포인터
: 배열의 시작주소가 넘어감
#include <iostream>
using namespace std;
// 함수: 포인터를 사용한 값 변경
void modeifyArr(char* ptr) {
ptr[0] = 'X'; // 포인터가 가리키는 변수의 값을 변경
}
int main() {
char str[4] = {'A', 'B', 'C', 'D'};
modeifyArr(str); // num의 주소 전달
cout << "포인터 전달 후 str[0] = " << str[0] << endl;
// 출력: 포인터 전달 후 str[0] = X
return 0;
}
레퍼런스
: 변수의 레퍼런스 값을 변경하면 변수 값도 변경된다.
하지만 한번 지정된 이상 다른 변수의 레퍼런스가 될 수 없다.

#include <iostream>
#include "Main.h"
// 숫자를 입력받아 *로 이루어진 다이아몬드 출력
// 각 줄의 별 개수는 홀수
int main()
{
int num = 0;
cout << "숫자 입력: " ;
cin >> num;
//중앙 라인의 별 개수 구하기
int star = 1 + (num - 1) * 2;
int i = 0;
bool isBot = false;
while (i>=0) {
// 별로 삼각형 그리기
for (int j = 0; j < star; j++) {
//현재 줄에서 별의 인덱스 구하기
//1+2i 개의 별, (star-1)/2번째 인덱스
if (j< (star - 1) / 2 - i || j >(star - 1) / 2 + i) {
cout << " ";
}
else {
cout << "*";
}
}
// 줄바꿈
cout << endl;
// 아래 삼각형으로 넘어갈때만 true로 변경
if (!isBot) {
isBot = i == num - 1 ? true : false;
}
// 아래 삼각형일때 i--
if (isBot) {
i--;
}
else {
i++;
}
}
return 0;
}