issues
search
2024-TEAM-05
/
algorithm-for-kakao
μΉ΄μΉ΄μ€ κΈ°μΆ λ¬Έμ κ°μ¦μπ£
0
stars
0
forks
source link
[2024 KAKAO WINTER INTERNSHIP] n + 1 μΉ΄λκ²μ
#4
Open
uijin-j
opened
2 months ago
uijin-j
commented
2 months ago
π
n + 1 μΉ΄λκ²μ
uijin-j
commented
1 month ago
π λκΈ ν νλ¦Ώ
Language : Java
μ±λ₯
μ½λ νμ΄
```java // νμ΄ μ½λ ... ```
μ½λ©νΈ
- OOO λΆλΆμ΄ μ΄λ €μμ μ’ μ€λκ±Έλ Έλ€μ! - OO ν€μλλ₯Ό λ³΄κ³ μ΄λΆνμμ λ μ¬λ Έμ΅λλ€!
hye-on
commented
1 month ago
Language : c++
μ±λ₯
μ½λ νμ΄
```c++ #include
#include
#include
using namespace std; //1:14 ~ 2:59 = 1μκ° 45λΆ //μ²μ μΈν // 1 2 3 4 5 6 7 8 9 10 11 12 13 // μ§μ΄ μ ν΄μ Έ μλ€. bool num[1001]; bool st[1001]; int p1,p2; bool nocard=false; int solution(int coin, vector
cards) { int answer = 0; int n = cards.size(); // n/3μ μ΄κΈ°μ κ°μ§κ³ μμ int k=0,k2=0; for(int i=0;i
0 && num[n+1 - p1]) { coin--; num[p1]=false; num[n+1-p1] = false; k++; }//μμ λμλ κ²κΉμ§ κ°μ΄ μ°λ€λ©΄ ν¨μ€ν μ μμ -> νλ³΄λ‘ λ±λ‘ else if(coin> 1 &&st[n+1 - p1]){ k2++; } if(coin >0 && num[n+1 - p2]) { coin--; num[p2]=false; num[n+1-p2] = false; k++; } else if(coin> 1 &&st[n+1 - p2]){ k2++; } //μμ λμλ κ²λ€μ νμ st[p1]=true; st[p2]=true; //λ½μ 2κ°λΌλ¦¬ n+1μ΄ λ μ μλ€λ©΄ νλ³΄λ‘ νμ if(coin>1 &&(p1+p2)== (n+1) ){ k2++; } if(k>0){ //κ°μ§κ³ μλ μ§(n+1) μ k--; r++; }else if(coin>1 && k2>0){ //μλ€λ©΄ κ°λ₯νν보 μ. κ·Έλ¦¬κ³ coin-=2 k2--; coin-=2; r++; } else{ //λΌμ΄λ μ§νλͺ»νλ©΄ λ break; } } return answer = r; } ```
μ½λ©νΈ
- μλ²½μ νΈλκΉ λ¨Έλ¦¬κ° μλμκ°λ€μ - coinμ λΉμ₯ μΈμ§ λμ€μ μΈμ§λ₯Ό μ’ λ κ³ λ―ΌνμΌλ©΄ λ 빨리 νμμ κ² κ°μ΅λλ€.
uijin-j
commented
1 month ago
π λκΈ ν νλ¦Ώ
Language : Java
μ±λ₯
μ½λ νμ΄
```java import java.util.*; // 03:09 START! 04:09 END! (1μκ° κ±Έλ¦Ό) // 그리λ, Set μλ£κ΅¬μ‘° class Solution { /** * 그리λλ μλ κ² κ°μλλ°, ν¬ν¬μΈν°λ‘ νλ €λ€ κ·Έλ¦¬λ!π * λ§μ½ μ΄λ―Έ μμ μλ μΉ΄λμ μμ΄ λλ μΉ΄λκ° μμΌλ©΄ λ°λ‘ μ½μΈ 1κ° μ£Όκ³ μ¬κΈ°! * λ§μ½ μμ μλ μΉ΄λμ μμ΄ λμ§ μμΌλ©΄ save, μ΄ν μμ΄ λλ μΉ΄λκ° λμ€λ©΄ κΈ°μ΅νλ€κ°, μ΅μ μ κ²½μ° μ½μΈ 2κ° μ£Όκ³ μ¬κΈ°! */ public int solution(int coin, int[] cards) { int answer = 1; // μ΅μ 1λΌμ΄λ passs int n = cards.length; int terget = n + 1; Set
mine = new HashSet<>(); // λ΄ μμ μλ μΉ΄λ int pair = 0; // λ΄κ° κ°μ§ ν©μ΄ n+1μΈ μΉ΄λμ for(int i = 0; i < n / 3; ++i) { if(mine.contains(terget - cards[i])) { pair++; // νμ΄λ₯Ό μ°Ύμλ setμμ μμ νμ§ μλ μ΄μ λ, μ€λ³΅λλ μκ° μκΈ° λλ¬Έ! (μ λ μλ νμ΄μΈ μκ° λ λμ¬ μ μμ!) continue; } mine.add(cards[i]); } Set
save = new HashSet<>(); // λ΄ μμ μμ§ μμ§λ§, λ΄κ° μ½μΈμ¨μ κ°μ Έμ¬ μ μλ μΉ΄λ int pairInSave = 0; // saveμ μλ ν©μ΄ n+1μΈ μΉ΄λμ for(int i = n / 3; i < n; i += 2) { // ν λΌμ΄λμ© μ§ν for(int j = i; j < i + 2; ++j) { // ν λΌμ΄λμ 2μ₯μ© νμΈ if(mine.contains(terget - cards[j])) { // μ½μΈμ νλλ§ μ¨λ λκΈ° λλ¬Έμ κ°μ Έκ°λκ² μ΄λ! if(coin <= 0) break; // μ½μΈ μμΌλ©΄ bye.. coin--; pair++; continue; } if(save.contains(terget - cards[j])) { pairInSave++; // μΌλ¨ 보λ₯ } save.add(cards[j]); } // λΌμ΄λ λ if(pair == 0) { if(pairInSave > 0 && coin >= 2) { pairInSave--; coin -= 2; answer++; continue; } // μ’ λ£ return answer; } pair--; answer++; } return answer; } } ```
μ½λ©νΈ
- λ¬Έμ μ ν νμ νλκ² μ‘°κΈ μ€λ κ±Έλ Έλ κ² κ°μ΅λλ€.. - μ μ μμκ° κ³ μ λ λ°°μ΄μμ λ μμ ν©μ΄ xμΈ νμ΄λ₯Ό ꡬν λ Mapμ μΌλ κΈ°μ΅μ΄ λμ, μμ©ν΄μ μ΄ κ² κ°μμ! μμ λ¬Έμ λ₯Ό λ§μ΄ νμ΄μΌ μμ΄λμ΄ λ μ¬λ¦¬κΈ° μ¬μ΄ κ² κ°μ΅λλΉ..
π n + 1 μΉ΄λκ²μ