PS Memo
๐ซ ๊ณต๋ถ
- ์ฝํ -> CS์ ๊ธฐ๋ณธ
๋ ๋น ๋ฅธ ์ฝ๋, ํ/์คํ
- ์ ๋ต์จ ๋์ ๋ฌธ์ ํ๊ธฐ 50% / 35%, ๋ฎ์๊ฑด ๋ณธ์ง์์ ๋ฒ์ด๋ ๊ผผ์/ํจ์ ์ด ๋ค์ด๊ฐ ๋ฌธ์ ์ผ ๊ฐ๋ฅ์ฑ ๋์
- ๋ค๋ฅธ ์ฌ๋ ํ์ด ์ฐพ์๋ณด๊ธฐ, ์ ๋ต์ด ์์ผ๋๊น
- ๋ฐ๋ณตํด์ ํ๊ธฐ
- Like ๋ด์ ์ํ
- ๋น์ทํ ๋ฌธ์ ๋ฅผ ํ๊ธฐ (์ด์ ๋ฌธ์ ์ ์ฐ๊ฒฐ์ง๊ธฐ, ์ดํ์๋ ์์ฉํ๊ธฐ)
- ์ด๋ป๊ฒ ํ์๋์ง ๊ธฐ์ตํ๋ ค๋ฉด, ์์ฉํ๋ ค๋ฉด ๋ฐ๋ณต ํ์ต์ด ์ค์ํ๋ค
- ์๊ฐ๋ณต์ก๋
- 1์ด์ ๋ช ๋ฒ ์ฐ์ฐํ๋๊ฐ?
- ๋ฐ์ดํฐ ์๋ฅผ ๋ณด๊ณ ์ ์ ํ ์๊ฐ ๋ณต์ก๋์ ์๊ณ ๋ฆฌ๋ฌ ๋ ์ฌ๋ฆฌ๊ธฐ (์ด๋ค ์๊ณ ๋ฆฌ๋ฌ์ ์ธ์ง๋ณด๋ค๋ ๊ฑฐ๋ฆ๋ง)
- ์์ฝ๋ฉ ๋จผ์ ํ๊ธฐ (๋ฐฉ๋ฒ๋ก ์ ๋จผ์ )
- ์๊ฐ๋ณต์ก๋ ์ค์ฌ์ผ๋ก ์๊ณ ๋ฆฌ๋ฌ๊ณผ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๊ณต๋ถํ๋ค
๐ซ Thinking
๊ท๋ฉ์ ์ผ๋ก ํผ๋ค.
์ปดํจํฐ๋ ๊ฑฐ์ง๋ง์ ์ํ๋ค.
๋ด ์ฝ๋๊ฐ ํ๋ ธ๊ฑฐ๋, ์ฃ์ง ์ผ์ด์ค์์ ํ๋ ธ๊ฑฐ๋.
์ฝ๋ฉ ํ
์คํธ์ ๊ฐ๋ฐ์ ๋ค๋ฅด๋ค
ํด๋ฆฐ์ฝ๋๋ฅผ ์ง๋๊ฒ ์๋๋ผ, ์ ํ๋ ์๊ฐ์์ ๋ด๊ฐ ํธํ ๋ฐฉ๋ฒ์ผ๋ก ์ ๋ต์ ๋ง์ถ๋ ๊ฒ ๋ ์ค์ํ๋ค.
๐ซ C++
๐ซง C++ ์ค์์ ์ฑ์ง
- ์ค์๋ฅผ ์ ์ฅ/์ฐ์ฐ ๊ณผ์ ์์ ๋ฐ๋์ ์ค์ฐจ๊ฐ ๋ฐ์ํ๋ค.
- ์ค์๋
double
์ ์ธ ๊ฒ - ์ค์๋ฅผ ๋น๊ตํ ๋ ๋ถํธ๋ฅผ ์ฐ์ง ๋ง ๊ฒ (๋ง์ฐฌ๊ฐ์ง๋ก ์ค์ฐจ)
- ์ค์๋
- ๋ณดํต ์ค์๋ฅผ ์จ์ผํ๋ ๋ฌธ์ ๋ผ๋ฉด ์ค์ฐจ๋ฒ์๋ฅผ ์๋ ค์ฃผ๋๋ฐ, ์์ผ๋ฉด ์ ์๋ง์ผ๋ก ํ ์ ์๋ ๋ฌธ์ ์ผ ๊ฐ๋ฅ์ฑ์ด ๋๋ค.
if (abs(a-b) - 1e-12)
(10-12)double
์long long
์ ๋ด์ง ๋ง ๊ฒ (๋ฒ์๋ก ์ธํ ์ค์ฐจ)
๐ซง C++ ๊ณต๋ฐฑ์ ํฌํจํ ๋ฌธ์์ด ์ ๋ ฅ ๋ฐ๊ธฐ
C์ scanf
, C++์ cin
๋ ๋ค ๊ณต๋ฐฑ์ ํฌํจํ ๋ฌธ์์ด์ ์
๋ ฅ ๋ฐ๊ธฐ ์ด๋ ต๋ค.
๋์ ์๋ 3๊ฐ์ง ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
// 1. scanf์ ์ต์
char a1[10];
scanf("%[^\n]", a1);
// 2. gets ํจ์ (๋ณด์์์ ์ด์ ๋ก C++14 ์ด์์์๋ ์ ๊ฑฐ๋จ)
char a2[10];
gets(a2);
puts(a2);
// 3. getline ํจ์
string s;
getline(cin, s);
cout << s;
๐ซง C++ ์ต์ ํ
sync_with_stdio
cin
cout
์ ์ธ ๋ ์๊ฐ์ด๊ณผ๊ฐ ๋ ์ ์๋ค.
C Stream(scanf
, printf
)๊ณผ C++ Stream(cin
, cout
)์ ๋๊ธฐํ๋ฅผ ๋์ด์ค๋ค.
1
ios::sync_with_stdio(false);
์ Why?
C Stream๊ณผ C++ Stream์ ์์ด ์ด๋ค๋ฉด, ์์๋๋ก ์คํ ๋๋๊ฒ ์ง๊ด์ ์ด๊ธฐ ๋๋ฌธ์ ์๋ก ๋๊ธฐํ๋ฅผ ์์ผ์ฃผ๊ณ ์๋ค.
C++ Stream๋ง ์ฐ๋ ๊ฑฐ๋ฉด ๊ตณ์ด ๋๊ธฐํ ํ ํ์๊ฐ ์์ผ๋, ์๊ฐ์ ์ด๋์ ์ป๊ธฐ ์ํด ๋๊ธฐํ๋ฅผ ๋์ด์ฃผ๋ ๊ฒ์ด ์ข๋ค.
Visual Studio 2017-2019 ์์๋ ์จ๋ ๊ฐ์ ์ ์ผ๋ก ๋๊ธฐํ๋ฅผ ์์ผ๋ฒ๋ฆฐ๋ค.
๋ฐฑ์ค ์ฑ์ ์๋ฒ๋ gcc๋ผ ์ฐจ์ด๊ฐ ์๋ค.
1
2
3
cout << "1";
printf("2");
cout << "3";
cin.tie
1
cin.tie(nullptr);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// ์
์ถ๋ ฅ ๋ฒํผ
// ๋ฒํผ์์ ๋ชจ์๋ค๊ฐ ์
๋ ฅ/์ถ๋ ฅ
for (~)
{
cin >> a >> b;
cout << a + b << '\n';
}
// ์ด๊ฒ๋ ์์๋๋ก ๋์ค๋ ๊ฒ ์ง๊ด์ ์ด๋๊น
// ์ง๋ณธ์ ์ผ๋ก๋ cin ๋ช
๋ น์ ์ํํ๊ธฐ ์ ์ cout ๋ฒํผ๋ฅผ ๋น์์ค๋ค (์ถ๋ ฅ์ ํ๋ค)
// ๊ทผ๋ฐ ์จ๋ผ์ธ ์ฑ์ ์๋ฒ๋ ๊ทธ๋ฅ ์ถ๋ ฅ๊ฐ๋ง ๋ณด๊ณ ์ฑ์ ์ ํ๋ค
// ๊ตณ์ด cin ๋ช
๋ น์ ์ํํ๊ธฐ ์ ์ cout์ ๋น์์ฃผ์ง ์์๋ ๋จ
// ๊ทธ๊ฑธ ๋์ด์ฃผ๋
endl ๋์ โ\nโ
endl
๋ ๊ฐํ ๋ฌธ์(\n
)๋ฅผ ์ถ๋ ฅํ๊ณ ๋ฒํผ๋ฅผ ๋น์์ค๋ค.
๋ฒํผ๋ฅผ ๋น์์ค ์ด์ ๊ฐ ์์ผ๋๊น ๋์ ์ง์ ๊ฐํ ๋ฌธ์(\n
)์ ์ถ๋ ฅํ๋ ๊ฒ์ด ์ข๋ค.
1
2
3
cout << endl;
// ๋์
cout << '\n';
STL์ ํจ์ ์ธ์๋ก ๋๊ธธ ๋ ์ฐธ์กฐ๋ก ๋๊ธฐ๊ธฐ
C++์์ STL์ ํจ์ ์ธ์๋ก ๋๊ธธ ๋, ๊ธฐ๋ณธ์ ์ผ๋ก ๋ณต์ฌํด์ ๋ณด๋ธ๋ค.
STL์ ํจ์ ์ธ์๋ก ๋๊ธฐ๊ณ ์ ํ ๋์๋ ์ฐธ์กฐ๋ก ๋๊ธฐ๋ ๊ฒ์ด ์ข๋ค.
๐ซง C++ Templete
1
2
3
4
5
6
7
8
9
#include <bits/stdc++.h>
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
}
๐ซ ๋ฉ๋ชจ
๐ซง _
- ์๊ฐ ๋ณต์ก๋
- ์ต์ ํด : ์ต๊ณ ์ข์ ํด๋ต
๐ซง Backjoon
์ถ๋ ฅ ๋ง์ง๋ง์ ๊ณต๋ฐฑ, ์ค๋ฐ๊ฟ์ด ์ถ๊ฐ๋ก ์์ด๋ ์๊ด์ด ์๋ค
- Baekjoon 18110 - โsolved.acโ (2023-12-13. 10:02)
- ๋ฐ์ฌ๋ฆผ
(int)(0.5 + n);
- C++ ๋ฐ์ฌ๋ฆผ,
round()
-<cmath>
- C++ ์ฐ์ ์์ํ,
priority_queue
-<queue>
- ๋ฐ์ฌ๋ฆผ
- Baekjoon 1439 - โ๋ค์ง๊ธฐโ (2024-02-17. 20:27)
- Replace, Split
0Count = Replace("0", " ").Split.Length
- Replace, Split
- Baekjoon 1926 - โ๊ทธ๋ฆผโ (2024-02-23. 04:11)
- Baekjoon 2178 - โ๋ฏธ๋ก ํ์โ (2024-02-23. 06:06)
char[]
๋ก ์ ๋ ฅ๋ฐ์์ง,string
์ผ๋ก ์ ๋ ฅ๋ฐ์์ง
- Baekjoon 7569 - โํ ๋งํ โ (2024-02-24. 18:56)
- C++
tuple
- C++
- Baekjoon 15683 - โ๊ฐ์โ (2024-03-01. 23:19)
- Baekjoon 18808 - โ์คํฐ์ปค ๋ถ์ด๊ธฐโ (2024-03-05. 04:54)
- C++ Swap
sawp(x, y)
- C++ ๋ฐฐ์ด/ํ๋ ฌ ์๊ณ๋ฐฉํฅ ํ์
B[x][y] = A[xLen-1-y][x]
- ํจ์ ๋ค์ด๋ฐ
~able
- C++ Swap
- BFS, ์์ ๋ฃ์ ๋
visit = true
ํด์ฃผ๊ธฐ
๐ซง ์ ํ
- ๊ณจ๋ 3~4 ์์ ์ ์ผ๋ก, ์ด๋ป๊ฒ ํธ๋ ์ง ๋ฐ๋ก ์๊ฐ๋ ์ ๋๋ก, ์ธ์ธ ์ ๋๋ก, ์ด๋ ค์ด ๊ฒ ์์ผ๋ฉด ๋ ํ์ด
๋ฐฑ์ค Class ๋์ด๋ ๋ณ๋ก
- ๋ถ์ผ : ๋ชปํด๋ 11๊ฐ, ๊ทธ๋ฆฌ๋, ํ์ (์์ ํ์/BFS/DFS), ๊ทธ๋ํ, DP, ๋ฐฑํธ๋ํน/์๋ฎฌ๋ ์ด์ , ์ข ๋? (ํฌ๋ฃจ์ค์นผ, ๋ค์ต์คํธ๋ผ/์ต์์ ์ฅํธ๋ฆฌ, ํธ๋ผ์ด)
์๋ฃ๊ตฌ์กฐ : ํด์ฑ, ํ์ฑ, ์คํ, ํ, ํธ๋ฆฌ, ๋ฌธ์์ด
- ํ๋ก๊ทธ๋๋จธ์ค : 42895, ๊ธฐ์ถ
์ฝ๋ํฌ์ค (๋ธ๋ฃจ)
- ํ
- ๋ฌธ์์ด ์กฐํฉ
- DFS/BFS
- ์๋ฎฌ๋ ์ด์ (์คํ, ํ, ๋ฑ)
- ํฌํฌ์ธํฐ
- ์ด๋ถํ์
- ์ค
- ์์์ ๋ ฌ
- MST / ํฌ๋ฃจ์ค์นผ + ํ๋ฆผ
- ๊ทธ๋ฆฌ๋
- ๋ฐฑํธ๋ํน
- ์
- DP (๊ฐ๋ ์ํ๊ณผ ์ฎ์ฌ์ ์ถ์ )
- ํธ๋ผ์ด / KMP
- ๋ค์ต์คํธ๋ผ
- X
- ๋ผ์ด๋๋ก๋น (์ค์ผ์ฅด๋ง)
- ์ผํญํธ๋ฆฌ
- ?
- ์ธ๊ทธ๋จผํธ ํธ๋ฆฌ
- A*
๐ซ TODO
- VS Release, execution time
- DFS vs BackTracking
- ๋ฐฑ์ค/ํ๋ก๊ทธ๋๋จธ์ค ๋ฌธ์ ์ง, ๋ถ๋งํฌ