int map[3][3] =
{
3,5,4,
1,1,2,
1,3,9
};
int dir[4][2] =
{
// x, y
-1, 0, // 좌
0, -1, // 상
1, 0, // 우
0, 1 // 하
};
int sum(int y, int x)
{
int ret = 0;
for (int i = 0; i < 4; ++i)
{
int dx = x;
int dy = y;
dx += dir[i][0];
dy += dir[i][1];
if (dx < 0 || 2 < dx || dy < 0 || 2 < dy)
{
continue;
}
ret += map[dy][dx];
}
return ret;
}
int main()
{
int x, y;
cin >> x >> y;
cout << sum(y, x);
return 0;
}
struct Data
{
Data() = default;
Data(int x, int y, int z)
:mx(x), my(y), mz(z) {}
int mx, my, mz;
};
int main()
{
Data a, b;
cin >> a.mx >> a.my >> a.mz;
cin >> b.mx >> b.my >> b.mz;
cout << a.mx + b.mx << endl;
cout << a.my + b.my << endl;
cout << a.mz + b.mz << endl;
}
int StrLen(const char* str)
{
int len = 0;
while (str[len]!= '\0')
{
++len;
}
return len;
}
struct MC
{
char bugger1[8] = { 0 };
char bugger2[8] = { 0 };
};
int main()
{
MC bob, tom;
cin >> bob.bugger1 >> bob.bugger2;
cin >> tom.bugger1 >> tom.bugger2;
cout << "bob.buger1=" << StrLen(bob.bugger1)<<endl;
cout << "bob.buger2=" << StrLen(bob.bugger2)<<endl;
cout << "tom.buger1=" << StrLen(tom.bugger1)<<endl;
cout << "tom.buger2=" << StrLen(tom.bugger2)<<endl;
}
int main()
{
int G;
cin >> G;
int* P, * K;
P = K = &G;
int** T, ** Q;
T = &P;
Q = &K;
cout << **T << " " << **Q;
return 0;
}
int vect[4][3] = { 0 };
struct CD
{
int x = 0;
int y = 0;
friend istream& operator>>(istream& in, CD& cd)
{
in >> cd.x >> cd.y;
return in;
}
};
int main()
{
CD input[4];
for (auto& d : input)
{
cin >> d;
vect[d.x][d.y] = 5;
}
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 3; ++j)
{
cout << vect[i][j] << " ";
}
cout << endl;
}
return 0;
}
bool Compare(const char* a, const char* b)
{
int i;
for (i = 0; a[i] != '\0'; ++i)
{
if (a[i] != b[i])
{
return false;
}
}
if (b[i] != '\0')
{
return false;
}
return true;
}
struct S
{
S() = default;
S(int win, const char* name)
:mWin(win)
{
for (int i = 0; name[i] != '\0'; ++i)
{
mName[i] = name[i];
};
};
int mWin = 0;
char mName[100] = { 0 };
bool operator==(const S& s)
{
return (this->mWin == s.mWin && Compare(this->mName, s.mName));
}
friend::istream& operator>>(istream& in, S& s)
{
in >> s.mWin >> s.mName;
return in;
};
};
int main()
{
S train[7] =
{
S(15,"summer"),
S(33,"cloe"),
S(24,"summer"),
S(28,"niki"),
S(32,"jenny"),
S(20,"summer"),
S(40,"coco")
};
S tom;
cin >> tom;
for (int i = 0; i < 7; ++i)
{
if (train[i] == tom)
{
cout << i;
return 0 ;
}
}
return 0;
}
#include <iostream>
using namespace std;
int map[5][5] =
{
3,3,5,3,1,
2,2,4,2,6,
4,9,2,3,4,
1,1,1,1,1,
3,3,5,9,2
};
int dir[4][2] =
{
// x, y
-1, -1, // 좌측상단
-1, 1, // 좌측 하단
1, -1, // 우측 상단
1, 1 // 우측 하단
};
int sum(int y, int x)
{
int ret = 0;
for (int i = 0; i < 4; ++i)
{
// 4방향 합
int dx = x;
int dy = y;
// 좌표 계산
dx += dir[i][0];
dy += dir[i][1];
if (dx < 0 || 4 < dx || dy < 0 || 4 < dy)
{
continue;
}
ret += map[dy][dx];
}
return ret;
}
int main()
{
int max = -1;
int fx = -1;
int fy = -1;
for (int i = 0; i < 5; ++i)
{
for (int j = 0; j < 5; ++j)
{
int t = sum(i, j);
if (max < t)
{
max = t;
fx = j;
fy = i;
}
}
}
cout << fy << " " << fx;
return 0;
}
char map[4][5] = { 0 };
struct CD
{
CD() = default;
CD(int ax, int ay)
{
x = ax;
y = ay;
}
int x = 0;
int y = 0;
CD operator+(const CD& cd) const
{
CD ret;
ret.x = this->x + cd.x;
ret.y = this->y + cd.y;
return ret;
}
};
CD dir[8] =
{
// x, y
CD(-1, 0), // 좌
CD(-1,- 1), // 좌측 상단
CD( 0, -1), // 상
CD( 1, -1), // 우측 상단
CD( 1, 0), // 우
CD( 1, 1), // 우측 하단
CD( 0, 1), // 하
CD(-1, 1) // 좌측 하단
};
void Boom(const CD& cd)
{
for (const auto& d: dir)
{
CD t = cd + d;
// 예외 처리
if (t.x < 0 || 5 <= t.x || t.y < 0 || 4 <= t.y)
{
continue;
}
map[t.y][t.x] = '#';
}
return;
}
int main()
{
memset(map, '-', sizeof(map));
CD input[2];
for (auto& d : input)
{
cin >> d.x >> d.y;
Boom(d);
}
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 5; ++j)
{
cout << map[i][j] << " ";
}
cout << endl;
}
return 0;
}
int image[4][4] = { 0 };
int rectSum(int y, int x)
{
int sum = 0;
for (int i = 0; i < 2; ++i)
{
for (int j = 0; j < 3; ++j)
{
sum += image[y + i][x + j];
}
}
return sum;
}
int main()
{
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
cin >> image[i][j];
}
}
int max = -1;
int my = -1;
int mx = -1;
for (int i = 0; i < 3; ++i)
{
for (int j = 0; j < 2; ++j)
{
int t = rectSum(i, j);
if (max < t)
{
max = t;
my = i;
mx = j;
}
}
}
cout << "(" << my << "," << mx << ")";
return 0;
}
// del : 토큰 이전까지의 문자를 저장
// clean : 토큰 이후의 문자를 저장
void Split(const char* data, const char token, char** del, char** clean)
{
// 1. 토큰의 인덱스, 문자열 사이즈 구하기
int tidx = 0;
bool flag = false;
int i;
for (i = 0; data[i] != '\0'; ++i)
{
if (flag == false && data[i] == token)
{
tidx = i;
flag = true;
}
}
int size = i; // 문자의 개수(널문자 제외)
// 2. del에 토큰 이전까지 문자 저장
*del = new char(tidx + 1);
for (int j = 0 ;j < tidx; ++j)
{
(*del)[j] = data[j];
}
(*del)[tidx] = '\0';
// 3. clean에 토근 이후의 문자열 저장
*clean = new char(size - tidx);
for (int j = 0; j <= tidx; ++j)
{
(*clean)[j] = data[j + tidx + 1];
}
(*clean)[size - tidx] = '\0';
return;
}
// 문자열을 정수로 변환하는 함수
int StoI(const char* str)
{
int ret = 0;
for (int i = 0; str[i] != '\0'; ++i)
{
ret *= 10;
ret += str[i] - '0';
}
return ret;
}
class Date
{
public:
Date() = default;
Date(int y, int m, int d)
:my(y), mm(m), md(d)
{};
Date(const char* str)
{
char* temp;
char* py;
char* pm;
char* pd;
Split(str, '/', &py, &temp);
Split(temp, '/', &pm, &pd);
my = StoI(py);
mm = StoI(pm);
md = StoI(pd);
delete temp;
delete py;
delete pm;
delete pd;
}
void show()
{
cout << my << "년" << mm << "월" << md << "일" << endl;
}
int getYear() { return my; };
int getMonth() { return mm; };
int getDay() { return md; };
private:
int my = 0;
int mm = 0;
int md = 0;
};
int main()
{
Date birth(2014, 3, 20);
Date independenceDay("1945/8/15");
independenceDay.show();
cout << birth.getYear() << ',' << birth.getMonth() << ',' << birth.getDay() << endl;
return 0;
}
'코딩 테스트 > 알고리즘 풀이' 카테고리의 다른 글
[LV5] 연습 문제 (0) | 2025.04.21 |
---|---|
[LV4] 복습 문제 (1) | 2025.04.21 |
[LV3] 복습 문제 (0) | 2025.04.15 |
[LV3] 연습 문제 (0) | 2025.04.14 |
[LV1] 복습 문제 (0) | 2025.04.13 |