π λ¬Έμ
λ€μκ³Ό κ°μ κ²λ€μ μ μν©λλ€.
- μ΄λ€ μμ΄ xμ λΆλΆ μμ΄(Subsequence)μ΄λ, xμ λͺλͺ μμλ€μ μ κ±°νκ±°λ κ·Έλ¬μ§ μκ³ λ¨μ μμλ€μ΄ μλ μμλ₯Ό μ μ§νμ¬ μ»μ μ μλ μλ‘μ΄ μμ΄μ λ§ν©λλ€.
- μλ₯Ό λ€μ΄, [1,3]μ [1,2,3,4,5]μ λΆλΆμμ΄μ λλ€. μλ μμ΄μμ 2, 4, 5λ₯Ό μ κ±°ν΄μ μ»μ μ μκΈ° λλ¬Έμ λλ€.
- λ€μκ³Ό κ°μ 쑰건μ λͺ¨λ λ§μ‘±νλ μμ΄ xλ₯Ό μ€ν μμ΄μ΄λΌκ³ μ μν©λλ€.
- xμ κΈΈμ΄κ° 2 μ΄μμ μ§μμ λλ€. (λΉ μμ΄μ νμ©λμ§ μμ΅λλ€.)
- xμ κΈΈμ΄λ₯Ό 2nμ΄λΌ ν λ, λ€μκ³Ό κ°μ nκ°μ μ§ν© {x[0], x[1]}, {x[2], x[3]}, ..., {x[2n-2], x[2n-1]} μ κ΅μ§ν©μ μμμ κ°μκ° 1 μ΄μμ λλ€.
- x[0] != x[1], x[2] != x[3], ..., x[2n-2] != x[2n-1] μ λλ€.
- μλ₯Ό λ€μ΄, [1,2,1,3,4,1,1,3]μ μ€ν μμ΄μ λλ€. {1,2}, {1,3}, {4,1}, {1,3} μ κ΅μ§ν©μ {1} μ΄κ³ , κ° μ§ν© λ΄μ μ«μλ€μ΄ μλ‘ λ€λ₯΄κΈ° λλ¬Έμ λλ€.
1μ°¨μ μ μ λ°°μ΄ aκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§λλ€. aμ λͺ¨λ λΆλΆ μμ΄ μ€μμ κ°μ₯ κΈΈμ΄κ° κΈ΄ μ€ν μμ΄μ κΈΈμ΄λ₯Ό return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ. μ΄λ, aμ λͺ¨λ λΆλΆ μμ΄ μ€μμ μ€ν μμ΄μ΄ μλ€λ©΄, 0μ return ν΄μ£ΌμΈμ.
μ νμ¬ν
- aμ κΈΈμ΄λ 1 μ΄μ 500,000 μ΄νμ
λλ€.
- aμ λͺ¨λ μλ 0 μ΄μ (aμ κΈΈμ΄) λ―Έλ§μ λλ€.
μ μΆλ ₯ μ
| [0] | 0 |
| [5,2,3,3,5,3] | 4 |
| [0,3,3,0,7,2,0,2,2,0] | 8 |
βοΈ νμ΄
λ€λ₯Έ μ¬λλ€μ νμ΄λ₯Ό μ°Έκ³ νλ€. 보면μ κΉ¨λ¬μ μ¬μ€μΈλ° λ΄κ° λ¬Έμ λ₯Ό μλͺ» μ΄ν΄νμμ μκ² λμλ€. λ¬Έμ μ μ§λ¬Έ μ€μ κ° μ§ν© λ΄μ μ«μλ€μ΄ μλ‘ λ¬λΌμΌ νλ€λ κ²μ λ§μ½ {1, 2}, {1, 2}λ‘ κ° μ§ν©μ λ€λ₯Έ μ«μλ€μ΄ κ°μΌλ©΄ μλλ€κ³ μ΄ν΄νμλ€...
aμ κΈΈμ΄κ° 500,000μ΄κΈ° λλ¬Έμ λͺ¨λ κ²½μ°λ₯Ό νμνλ κ²μ λΉμ°ν μλ κ²μ΄λΌκ³ μκ°μνλ€. νμ΄λ₯Ό λ³΄κ³ μ κΉ¨λ¬μ μ μ΄ κ°μ₯ κ°λ₯μ±μ΄ ν° μ«μλΆν° νμνλ©΄ ν¨κ³Όμ μΌλ‘ κ²½μ°μ μλ₯Ό μ€μΌ μ μλ€λ μ μ΄μλ€. λ°λΌμ a μμ΄μμ κ°μ₯ λ§μ΄ λμ¨ μ«μλΆν° νμνλ€. λ§μ½ (1, 3, 3, 2, 3, 2, 2, 2, 2, 2, 2, 2) μ΄λ° κ²½μ° 2κ° μ μΌ λ§μ΄ λ±μ₯νμ§λ§ λ΅μ {1, 3}, {3, 2}, {3, 2}μΌλ‘ 6μ΄ λλ€. νμ§λ§ 2λ₯Ό νλ² νμνκ³ λ€μμΌλ‘ λ§μ΄ λ±μ₯νλ 3μ κΈ°μ€μΌλ‘ νμνκΈ° λλ¬Έμ κ²½μ°μ μκ° μ€μ΄λ λ€. μ΄λ μμ΄μ κΈΈμ΄κ° κΈΈμλ‘ ν¨κ³Όμ μΌ κ²μ΄λΌκ³ μκ°νλ€. λ°λΌμ λ°°μ΄μ λλ©° Mapμ μ μ₯νλ€. (Mapμ μ¬μ©ν μ΄μ λ μ΅κ·Ό λ¬Έμ λ₯Ό νλ©΄μ μ½μ , μμ κ° λ§μ΄ λ±μ₯ν μλ‘ κ°μ²΄({})보λ€λ Mapμ΄ λ ν° ν¨μ¨μ±μ 보μμ μκ² λμκΈ° λλ¬Έ!) κ·Έλ¦¬κ³ λ°°μ΄λ‘ λ³ν νμ λ±μ₯ν νμλ₯Ό κΈ°μ€μΌλ‘ λ΄λ¦Όμ°¨μμΌλ‘ μ λ ¬νλ€.
μ΄μ μ΄ μ λ ¬λ λ°°μ΄μ λ°λ³΅λ¬ΈμΌλ‘ λλ©° μνμμ΄μ κΈ°μ€μ΄ λλ μλ₯Ό λ°κΏμ£Όλ©° νμνλ€. a λ°°μ΄μ μ²μλΆν° λκΉμ§ λλ©΄μ λ κ°μ μμλ₯Ό λΉκ΅νλ©° κΈ°μ€μ λΆν©ν λ μμ΄μ κΈΈμ΄μ 2λ₯Ό λν΄μ€λ€.
- νλμ μλ μ€νμμ΄μ κΈ°μ€μ΄ λλ μμ΄μ¬μΌ νλ€.
- μΈμ ν λ μκ° λμΌνλ©΄ μλλ€.
μ΄μ λΆν©νλ©΄ μ€νμμ΄μ κΈΈμ΄λ₯Ό μλ―Ένλ starCntλ₯Ό 2 μ¦κ°μμΌμ€¬λ€. κ·Έλ¦¬κ³ ν΄λΉ μΈλ±μ€κΉμ§ μ€νμμ΄μ μμλ‘ λΉ μ§λ―λ‘ μΆκ°μ μΌλ‘ 1μ μΈλ±μ€λ₯Ό μ¦κ°μμΌμ€¬λ€.
λ§μ½ νμ¬μ answerλ³΄λ€ νμ¬ μ€νμμ΄μ κΈ°μ€μ΄ λλ μμ λ±μ₯ νμ * 2κ° μ λ€λ©΄ μ λ μ΅λκ° κ°±μ μ ν μ μμΌλ―λ‘ λ°λ³΅λ¬Έμ μ’ λ£νλ€.
λͺκ°μ§ κ²½μ°μ μμλ₯Ό λ€μ΄ μ€λͺ νλ©΄ λ€μκ³Ό κ°λ€.
- (1, 2, 2, 2, 4, 4)μ κ²½μ° (맨 μ²μ 2λ₯Ό κΈ°μ€)
- 맨 μ²μμ 1, 2λ₯Ό λΉκ΅ -> μ€νμμ΄μ΄ λ μ μμ(2κΉμ§λ λΉκ΅ν μ μμΌλ―λ‘ μΈλ±μ€λ₯Ό μΆκ°μ μΌλ‘ 1μ¦κ°)
- 2, 2 λΉκ΅ -> μ€νμμ΄μ΄ λ μ μμ ν¨μ€
- 2, 4 λΉκ΅ -> μ€νμμ΄μ΄ λ μ μμ
- {1, 2}, {2, 4}λ‘ λ΅μ 4
- (1, 2, 1, 3, 4, 4, 4, 4, 4)μ κ²½μ° (맨 μ²μ 4λ₯Ό κΈ°μ€)
- 1, 2 λΉκ΅ -> μ€νμμ΄μ΄ λλ κΈ°μ€ μ(4)κ° μμΌλ―λ‘ ν¨μ€(μ΄νλ‘λ μ ν¨μ€)
- 3, 4 λΉκ΅ -> μ€νμμ΄μ΄ λ μ μμ
- 4, 4 λΉκ΅ -> κ°μ΄ κ°μΌλ―λ‘ μ€νμμ΄μ΄ λ μ μμ(μ΄νλ‘λ λ§μ°¬κ°μ§)
- {3, 4}λ‘ μ€νμμ΄ κ΅¬μ±
- λ€μμΌλ‘ λ§μ μ 1μ κΈ°μ€μΌλ‘ λ€μ λ°λ³΅(νμ¬ answer = 2, 1μ κ°μ 2)
- 1, 2λΉκ΅ -> μ€νμμ΄μ΄ λ μ μμ
- 1, 3 λΉκ΅ -> μ€νμμ΄μ΄ λ μ μμ
- 4, 4 λΉκ΅ -> μ€νμμ΄μ΄ λ μ μμ ν¨μ€(μ΄ν λ§μ°¬κ°μ§)
- {1, 2}, {1, 3}μΌλ‘ λ΅μ 4
β¨οΈ μ½λ
function solution(a) {
var answer = -1;
const hash = new Map();
for (const num of a) {
hash.set(num, (hash.get(num) || 0) + 1);
}
const hashArr = [...hash.entries()].sort((a, b) => b[1] - a[1]);
for (const [num, cnt] of hashArr) {
if (answer > cnt * 2) break;
let starCnt = 0;
for (let i = 1; i < a.length; i++) {
if (a[i - 1] === a[i]) continue;
if (a[i - 1] !== num && a[i] !== num) continue;
starCnt += 2;
i += 1;
}
answer = Math.max(answer, starCnt);
}
return answer;
}'Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| [Algorithm] 리μ½μ³ λ‘λ΄ (0) | 2023.03.29 |
|---|---|
| [Algorithm] νΌμμ νλ ν±νν (0) | 2023.03.28 |
| [Algorithm] κ΄λ¬Ό μΊκΈ° (0) | 2023.03.26 |
| [Algorithm] μ¬λ°λ₯Έ κ΄νΈμ κ°―μ (0) | 2023.03.25 |
| [Algorithm] 무μ§μ λ¨Ήλ°© λΌμ΄λΈ (0) | 2023.03.24 |