๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/42862
ํ์ด
1. ๋ชจ๋ ํ์๋ค์ ์ฒด์ก๋ณต ์ ๊ณ์ฐ
(1) ์ฒ์์ ๋ชจ๋ ํ์๋ค์ 1๊ฐ์ ์ฒด์ก๋ณต์ ๊ฐ์ง๊ณ ์๋ค.
(2) ์ฌ๋ฒ์ ์ฒด์ก๋ณต์ด ์๋ ํ์: +1
(3) ์ฒด์ก๋ณต์ ๋๋๋นํ ํ์: -1
2. 1๋ฒ ํ์๋ถํฐ ์ฒด์ก๋ณต์ ๋น๋ฆฌ๋ ๊ฒฝ์ฐ ๊ณ์ฐ
(1) ๋๋๋นํ ํ์(์ฒด์ก๋ณต ๊ฐ์: 0)์ ์์์ ํ์์๊ฒ ์ฒด์ก๋ณต์ ๋น๋ฆด ์ ์๋์ง(์ฒด์ก๋ณต ๊ฐ์: 2) ํ์ธํ๋ค.
(2) ์ผ์ชฝ ํ์์๊ฒ ์ฐ์ ์ ์ผ๋ก ๋น๋ฆฐ๋ค.
๐จ ์ ์ฒด ํ์ ์ธ๋ฑ์ค ์ ์
- ํ์ ๋ฒํธ๊ฐ 1๋ฒ๋ถํฐ ์์ํ๋ฏ๋ก n + 1
- n๋ฒ์งธ ํ์์ด ์ค๋ฅธ์ชฝ ํ์์ ํ์ํ๋ ๊ฒฝ์ฐ๊ฐ ์กด์ฌํ๋ฏ๋ก n + 2
์ฝ๋
#include <iostream>
#include <vector>
using namespace std;
int solution(int n, vector<int> lost, vector<int> reserve) {
int answer = n;
vector<int> clothes(n + 2, 1); // ์ฒ์ ํ์์ด ๊ฐ์ง๊ณ ์๋ ์ฒด์ก๋ณต ์: 1
for (int i: reserve) { // ์ฌ๋ฒ์ ์ฒด์ก๋ณต์ด ์๋ ํ์
clothes[i]++;
}
for (int i: lost) { // ์ฒด์ก๋ณต์ ๋๋๋นํ ํ์
clothes[i]--;
}
for (int i = 1; i <= n; i++) {
if (clothes[i]) { // ์ฒด์ก๋ณต์ด ์์
continue;
}
if (clothes[i - 1] == 2) { // ์ผ์ชฝ ํ์์๊ฒ ๋น๋ฆฌ๊ธฐ
clothes[i - 1]--;
clothes[i]++;
} else if (clothes[i + 1] == 2) { // ์ค๋ฅธ์ชฝ ํ์์๊ฒ ๋น๋ฆฌ๊ธฐ
clothes[i + 1]--;
clothes[i]++;
}
}
for (int i = 1; i <= n; i++) {
if (!clothes[i]) {
answer--;
}
}
return answer;
}
'๐ญ Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค][C++] ํคํจ๋ ๋๋ฅด๊ธฐ (0) | 2024.05.27 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 20546๋ฒ: ๐ ๊ธฐ์ ์ ๋งค๋งค๋ฒ ๐ (0) | 2024.05.26 |
[BOJ][C++] ๋ฐฑ์ค 1212๋ฒ: 8์ง์ 2์ง์ (0) | 2024.05.24 |
[BOJ][C++] ๋ฐฑ์ค 9184๋ฒ: ์ ๋๋ ํจ์ ์คํ (0) | 2024.05.12 |
[SWEA][C++] 1209. [S/W ๋ฌธ์ ํด๊ฒฐ ๊ธฐ๋ณธ] 2์ผ์ฐจ - Sum (0) | 2024.05.06 |