κ³΅λΆ μ Tmi.
λ§€μΌ μΌ μ§ μΌ μ§ νλ κΎΈλ―Έλ λ λ μκ³ λλ₯Ό λ무 λμΆ©λμΆ© μ΄κ² λλ κ±° κ°μμ ννκ° μ΅λλ€. μ·λ κ°λ°©λ νμ₯νλ μ μ° μ§ μ€λ λ κ±° κ°μμ. λλ₯Ό μν μλΉλ μμ΄ κ·Έλ₯ λ¨Ήκ³ μκ³ μΌν©λλ€. μ΄λ κ² μ΄λ©΄ μ’μκΉ? λΌλ μκ°μ΄ μ’ μ’ λλλ€. μ μ΄κ³ μλ건 μλκ±° κ°μ£ ? γ γ 곡λΆλ μ‘°κΈ μ¬μμ΄μ. λμ μλλ‘ κ³΅λΆνλ €κ³ νλλ° λ¨λ€μ μλλ₯Ό λ³΄κ³ λΆμν¨μ λλΌλ©΄μ μ°μΈκ°μ μ¬λ κ²…? μ°Έ μμ΄λ¬λν©λλ€. (νμ¬..) λ°±μ€ λλμ΄ 200κ° λννμ΅λλ€. μμ§ μ μ μμ§λ§ μ΄λ² μ°λμ 500κ°λ λκ³ μΆλ€μ. μ§κΈμ μ λ§ νΈλ λ° μ€λ κ±Έλ¦¬κ³ μ΄μ μ νμλ κ±°μ λΉμ·ν λ¬Έμ μ¬λ ν€λ§€λλ° κ·Έλ¬μ§ μμ λ μ΄ μ¬κΉμ? νμ¬ κ³¨λ 2 μ λλ€. λ°±μ€μ΄ νλ λλμ΄ λλ λ ν λ² λ Tmiμ μ κ² μ΅λλ€. νλ΄μ! λ©μ§ μ¬μ±μ΄ λκ² μΉ ~! μμ !!
μ€λμ λΉνΈ λ§μ€ν¬μ λν΄μ μ μ μ΄ λΆμνλ €κ³ ν©λλ€. μμ¦ DP λ¬Έμ λ₯Ό νΈλλ° λΉνΈ λ§μ€ν¬λ₯Ό μ¬μ©νλ λΆλΆμ νκ³ μκ±°λ μ. λͺ¨λ₯΄κ² μ΄μ…. κ·Έλ₯ λͺ¨λ₯΄κ² μ΄ ~~~ μ μ λμκ°λλ€. λΉνΈ λ§μ€ν¬μ λν΄μ μ 리ν΄λ΄ μλ€.
λΉνΈ μ°μ°μ
μ¬κΈ°μλ νλ‘κ·Έλλ°μμ λ°°μ΄μ μλ μμ μμ νκ³ μΆκ°νκ³ μλμ§ νμΈνλ μμ μ λΉνΈμ λΉνΈμ°μ°μλ‘ νλ λ°©λ²μ λν΄μ 곡λΆνλ €κ³ ν©λλ€.
λΉνΈ λ§μ€ν¬λ λΉνΈλ₯Ό λ€λ€μΌ νλ λ¬Έμ μ΄λ―λ‘ λΉνΈ μ°μ°μλ₯Ό μ λλ‘ μμμΌ ν©λλ€. λΉνΈ(Bit)λ μ»΄ν¨ν°μμ μ²λ¦¬νλ μ 보μ μ΅μννλ¨μ μ λλ€. μ°λ¦¬κ° μ¬μ©νλ μ«μλ 10μ§μκ³ μ΄ 10μ§μλ₯Ό 0κ³Ό 1λ‘ ννμ νλ©΄ λΉνΈλ‘ νννλλ° μ΄λ₯Ό 2μ§μλΌκ³ μΉν©λλ€.
a & b | AND | πΉ λλ€ 1μ΄λΌλ©΄ 1, μλλΌλ©΄ 0 ex. ( A = 0101 / 5 ) & ( B = 0001 / 1 ) = ( Result = 0001 / 1 ) |
a | b | OR | πΉ λλ€ 0μ΄λΌλ©΄ 1, μλλΌλ©΄ 0 ex. ( A = 0101 / 5 ) | ( B = 0001 / 1 ) = ( Result = 0101 / 5 ) |
a ^ b | XOR | πΉ λͺ¨λ λΉνΈμ λν΄μ λ°λλ‘ Notμ°μ°μ ν΄μ€λ€. ex. ( A = 0101 / 5 ) ^ ( B = 0001 / 1 ) = ( Result = 0001 / 1 ) |
~ a | NOT | πΉ λͺ¨λ λΉνΈμ λν΄μ λ°λλ‘ Notμ°μ°μ ν΄μ€λ€. ex. ~(1011) = 0100 |
a << b | LEFT SHIFT | πΉ μΌμͺ½μΌλ‘ λ°μ΄μ€λ€. ex. 1. 0001 << 0 = 0001 2. 0101 << 1 = 1010 3. 0101 << 3 = 0010 1000 |
a >> b | RIGHT SHIFT | πΉ μ€λ₯Έμͺ½μΌλ‘ λ°μ΄μ€λ€. ex. 1. 0001 >> 0 = 0001 2. 0101 >> 1 = 0010 3. 0101 >> 3 = 0000 |
λΉνΈ λ§μ€ν¬λ₯Ό μ΄μ©ν μΆκ°, μμ , ν κΈ, κ²μ
μ 리νκΈ°
// Add
S |= 1 << x - 1;
// Remove
S &= ~(1 << x - 1);
// Check
cout << ((S & (1 << x - 1)) ? true : false);
// Toggle
S ^= 1 << x - 1;
// λͺ¨λ 1λ‘ μ±μ°κΈ°
S = ~(0 << N);
S = (1<<N)-1;
//λͺ¨λ 0μΌλ‘ μ±μ°κΈ°
S = 0;
// onλμ΄ μλ μ§ν© κ°μ μΈκΈ°
ex) M = 1001 0110
while (M) {
count += (M&1);
M >>= 1;
}
// 1001 0110 .... count = 0
// 0100 1011 .... count = 1
// 0010 0101 .... count = 2
// 0001 0010 .... count = 2
// 0000 1001 .... count = 3
// 0000 0100 .... count = 3
....
// 0000 0001 .... count = 4
'π¨π»βπ» programming > β½ μκ³ λ¦¬μ¦' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[ Algorithm/ KMP μκ³ λ¦¬μ¦ ] (4) | 2024.07.23 |
---|---|
binary search & lower bound & upper bound [c++ ꡬν] (0) | 2024.07.05 |
[Algorithm/ Sparse Table (ν¬μν μ΄λΈ)] λ°±μ€ 17435λ²κ³Ό ν¨κ» (0) | 2023.02.01 |
[Algorithm/Shortest Path] A* μκ³ λ¦¬μ¦ - ꡬνC++ (0) | 2022.06.20 |
[Algorithm/MST] νλ¦Ό(Prim) μκ³ λ¦¬μ¦ (0) | 2022.03.07 |
μ νλ κ² λ³΄λ€ λ«κ² μ§
ν¬μ€ν μ΄ μ’μλ€λ©΄ "μ’μμβ€οΈ" λλ "ꡬλ ππ»" ν΄μ£ΌμΈμ!