ํฌ์ŠคํŠธ

PS Memo

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
  • 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
  • Baekjoon 15683 - โ€˜๊ฐ์‹œโ€™ (2024-03-01. 23:19)
    • C++ #define x first
    • ์˜คํƒ€!
    • ์•„๋†”!
    • ํ•จ์ˆ˜ ๋„ค์ด๋ฐ OOB : OutOfBounds, ๋ฐฐ์—ด ๋ฒ”์œ„ ์ดˆ๊ณผํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š”
    • C++ tie(x, y) = somePair;
    • C++ ๋‹ค์ฐจ์› ๋ฐฐ์—ด ๋ณต์‚ฌ copy(&source[0][0], &source[0][0] + (n * m), &dest[0][0])
  • Baekjoon 18808 - โ€˜์Šคํ‹ฐ์ปค ๋ถ™์ด๊ธฐโ€™ (2024-03-05. 04:54)
    • C++ Swap sawp(x, y)
    • C++ ๋ฐฐ์—ด/ํ–‰๋ ฌ ์‹œ๊ณ„๋ฐฉํ–ฅ ํšŒ์ „ B[x][y] = A[xLen-1-y][x]
    • ํ•จ์ˆ˜ ๋„ค์ด๋ฐ ~able
  • 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
  • ๋ฐฑ์ค€/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฌธ์ œ์ง‘, ๋ถ๋งˆํฌ
์ด ๊ธฐ์‚ฌ๋Š” ์ €์ž‘๊ถŒ์ž์˜ CC BY 4.0 ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.