-
[hacker rank] Organizing containers of balls알고리즘/Hacker Rank 2021. 9. 8. 14:25
풀이
현재 각 컨테이너에 있는 공의 개수와, 각 타입별 공의 개수를 비교해봅니다. 현황이 일치하면 됩니다. 예를 들어 컨테이너에 들어 있는 공 개수 배열이 {3, 2, 3}이고, 각 타입에 대한 개수 배열이 {2, 3, 3}이면 서로 계속 스왑을 한다고 해도 컨테이너에 들어 있는 공의 현황이 {3, 2, 3}인 건 바뀌지 않습니다. 때문에 개수에 대한 현황이 같기만 하다면, 스왑을 하다 보면 각기 다른 컨테이너에 같은 타입의 공을 모을 수 있습니다.
코드
string organizingContainers(vector<vector<int>> container) { size_t size = container.size(); vector<int> each_container(size, 0); vector<int> each_type(size, 0); for (size_t i = 0; i < size; ++i) { for (size_t j = 0; j < size; ++j) { each_container[i] += container[i][j]; each_type[j] += container[i][j]; } } sort(each_container.begin(), each_container.end()); sort(each_type.begin(), each_type.end()); for (size_t i = 0; i < size; ++i) { if (each_container[i] != each_type[i]) return "Impossible"; } return "Possible"; }
'알고리즘 > Hacker Rank' 카테고리의 다른 글
[hacker rank] The time in words (0) 2021.09.09 [hacker rank] Encryption (0) 2021.09.09 [hacker rank] Extra long factorial (0) 2021.09.07 [hacker rank] Climbing the leaderboard (0) 2021.09.04 [hacker rank] (0) 2021.09.01