- Today
- Total
- java
- ๋ฌธ๋ฒ
- BFS
- ๋ค์ต์คํธ๋ผ
- tree
- ๋ฐฑ์ค
- database
- Graph
- ๊ตฌํ
- OOP
- spring
- ์๋ฃ๊ตฌ์กฐ
- Algorithm
- pytorch
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ์๋ฐ์์ ์
- CS
- MST
- array
- ํ๋ก๊ทธ๋๋จธ์ค
- ์๋ฐ
- dp
- ๋ฐฑ์๋
- ๋ฒจ๋งํฌ๋
- ์์์ ๋ ฌ
- PS
- leetcode
- ๊ทธ๋ฆฌ๋
- ์ธํด
- ์กธ์ ์ํ
Partially Committed
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฒด์ก๋ณต ๋ณธ๋ฌธ
https://programmers.co.kr/learn/courses/30/lessons/42862
ํ์ด1.
์ฒ์์ ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ๋ฐ๋ก ๋ ์ค๋ฅธ ๋ฐฉ๋ฒ์ด๋ค. ๊ทธ๋์ ๊ทธ๋ฐ์ง ๋ค์ ๋ ผ๋ฆฌ๊ฐ ๊น๋ํ์ง๋ ๋ชปํ ๊ฒ ๊ฐ๋ค...
1. hash ๋งต์ ํ์ฌ ํ์๋ค์ ์ฒด์ก๋ณต ๊ฐ์ ํํฉ์ ์ ์ฅํ๋ค.
2. ์ฒด์ก๋ณต์ด ์๋ ํ์์ ์๋ท๋ฒํธ์ ํ์์ด ์ฒด์ก๋ณต ์ฌ๋ถ์ด ์๋ค๋ฉด ์ฒด์ก๋ณต์ ํ๋ ์ค ์ ์๋ค.
์๋ฅผ ๋ค์ด i ๋ฒ์งธ ํ์์ด ์ฒด์ก๋ณต์ด ์๋ค๋ฉด i-1 ๋ฒ์งธ, i+1 ๋ฒ์งธ ํ์์ด ์ฌ๋ถ์ด ์๋ค๋ฉด i ๋ฒ์งธ ํ์์๊ฒ ํ๋๋ฅผ ์ค ์ ์๋ค.
3. i-1 ๋ฒ์งธ ํ์์ด i ๋ฒ์งธ ํ์์๊ฒ ์ฒด์ก๋ณต์ ์ค ๊ฒฝ์ฐ์ i+1 ๋ฒ์งธ ํ์์ด i ๋ฒ์งธ ํ์์๊ฒ ์ฒด์ก๋ณต์ ์ค ๋ ๊ฐ์ง ์ํฉ์ ๋ํด์ ์ฒด์ก๋ณต์ 1๊ฐ ์ด์ ๊ฐ์ง ํ์์ด ๋ง์ ์ํฉ์ ํํ๋๋ก ํ๋ค.
( ํ์ฌ ์ํฉ์์ ์ต๋ํ ์ข์ ๊ฒฐ๊ณผ๋ก ๋ณด์ด๋ ์ ํ์ ๋ฐ๋ณตํ๋ค. )
4. ์ด๋ i-1 ๋ฒ์งธ ํ์๊ณผ i+1 ๋ฒ์งธ ํ์์ด ๋์์ ์ฌ๋ถ์ ๊ฐ์ง๊ณ ์๋ค๋ฉด, ์ ์์์ ํ์์๊ฒ ์ฌ๋ถ์ ๋ฐ๋๋ก ์ฒ๋ฆฌํ๋ค.
[C++]
#include <string>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
int check_max(map<int, int> h_map)
{
int sum = 0;
for (auto& ele : h_map)
{
if (ele.second > 0)
sum++;
}
return sum;
}
int solution(int n, vector<int> lost, vector<int> reserve) {
int answer = 0;
map<int, int> h_map;
for (int i = 1; i <= n; i++)
{
h_map.insert(make_pair(i, 1));
}
for (auto& ele : reserve)
{
h_map[ele]++;
}
for (auto& ele : lost)
{
h_map[ele]--;
}
if (h_map[1] == 0 && h_map[2] == 2)
{
h_map[1]++;
h_map[2]--;
}
bool flag = false;
for (int i = 2; i <= n; i++)
{
int temp1 = 0; int temp2 = 0;
if (h_map[i] == 0) // lost
{
if (flag==false&&h_map[i - 1] == 2)
{
h_map[i - 1]--;
h_map[i]++;
temp1 = check_max(h_map);
h_map[i]--;
h_map[i - 1]++;
flag = true;
}
if (flag == false&&h_map[i + 1] == 2)
{
h_map[i + 1]--;
h_map[i]++;
temp2 = check_max(h_map);
h_map[i]--;
h_map[i + 1]++;
flag = true;
}
if (flag == false&&h_map[i - 1] == 2 && h_map[i+1] == 2)
{
h_map[i - 1]--;
h_map[i]++;
temp1 = check_max(h_map);
h_map[i]--;
h_map[i - 1]++;
flag = true;
}
if (flag == true)
{
if (temp1 > temp2)
{
h_map[i - 1]--;
h_map[i]++;
flag = false;
continue;
}
else
{
h_map[i + 1]--;
h_map[i]++;
flag = false;
continue;
}
}
}
}
answer = check_max(h_map);
return answer;
}
'๐ฅ Algorithm || ๋ฌธ์ ํ์ด > PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[2019 KAKAO BLIND RECRUITMENT] ์คํจ์จ (0) | 2022.07.04 |
---|---|
[์ฐพ์๋ผ ํ๋ก๊ทธ๋๋ฐ ๋ง์์คํฐ] ํฐ์ผ๋ชฌ (0) | 2022.07.03 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ชจ์๊ณ ์ฌ (0) | 2022.07.02 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ฃผํ์ง ๋ชปํ ์ ์ (0) | 2022.07.02 |
[์ ๋ ฌ] k๋ฒ์งธ์ (0) | 2022.07.01 |