[HackerRank/C++] Happy Ladybugs
2023. 2. 8. 09:04ㆍ코딩테스트 해커랭크/Algorithms -Easy
문자열 b를 받으며 A~Z의 아스키 코드값과 _를 값으로 가지고 있다
A~Z는 Ladybugs이며 _는 빈 공간으로 Ladybugs가 이동할 수 있는 공간이다
Ladybugs는 양 옆에 같은 종류의 Laybugs가 있으면 Happy하다고 한다
해당 배열에서 빈공간으로 움직이며 모든 Ladybug가 Happy할 수 있다면 YES, 불가능하다면 NO를 return한다
string happyLadybugs(string b)
{
bool under = false;
for (const auto& i : b)
if (i == '_')
under = true;
if (!under)
{
for (int i = 0; i < b.size(); ++i)
{
if (i - 1 >= 0)
if (b[i] == b[i - 1])
continue;
if (i + 1 < b.size())
if (b[i] == b[i + 1])
continue;
return "NO";
}
return "YES";
}
else
{
sort(b.begin(), b.end());
for (int i = 0; i < b.size(); ++i)
{
if (b[i] == '_')
continue;
if (i - 1 >= 0)
if (b[i] == b[i - 1])
continue;
if (i + 1 < b.size())
if (b[i] == b[i + 1])
continue;
return "NO";
}
return "YES";
}
}
첫번째로 자유롭게 움직일 수 있는 빈 공간이 존재하는지 검사한다
만약 빈 공간이 없다면 자유롭게 움직일 수 없으므로 해당 배열을 검사하며 양 옆에 같은 종류의 Ladybugs가 있는지 확인하고, 없는 케이스가 있다면 NO를, 모두 옆에 존재한다면 YES를 return 한다
빈 공간이 존재한다면 Ladybugs가 자유롭게 움직일 수 있으므로 sort 함수를 이용해 모든 값을 정렬시켜준다
이 후 마찬가지로 배열을 검사하며 양 옆에 같은 종류의 Ladybugs가 있는지 확인한 후 결과를 return 한다
'코딩테스트 해커랭크 > Algorithms -Easy' 카테고리의 다른 글
| [HackerRank/C++] Big Sorting (0) | 2023.02.08 |
|---|---|
| [HackerRank/C++] Strange Counter (0) | 2023.02.08 |
| [HackerRank/C++] Manasa and Stones (0) | 2023.02.08 |
| [HackerRank/C++] Cavity Map (0) | 2023.02.08 |
| [HackerRank/C++] Fair Rations (0) | 2023.02.08 |