반응형
https://leetcode.com/problems/check-array-formation-through-concatenation/description/
전수조사 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
key는 각 조각의 시작 숫자, value는 그 조각의 내용을 저장할 unordered_map pieceMap을 선언 후 값을 저장합니다.
📔 풀이과정
arr의 원소에 대해 for loop를 수행합니다.1. pieceMap에 arr원소값이 없다면 조각을 이용해 arr을 만들 수 없으므로 false를 반환합니다.2. 있다면 해당 조각 내용을 pieceMap에서 찾아 지역변수 piece를 선언 후 저장합니다. 이후 piece의 원소를 순회하며 arr과 순서가 맞는지 비교해 맞지 않다면 false를 반환합니다.
📔 정답 출력 | 반환
모든 조건에 부합하므로 true를 반환합니다.
📕 Code
📔 C++
class Solution {
public:
bool canFormArray(vector<int>& arr, vector<vector<int>>& pieces) {
unordered_map <int, vector<int>> pieceMap;
for(auto piece : pieces) {
pieceMap[piece[0]] = piece;
}
for(int i = 0; i < arr.size();) {
if(pieceMap.find(arr[i]) == pieceMap.end()) {
return false;
}
vector <int> piece = pieceMap[arr[i]];
for(auto num : piece) {
if(arr[i++] != num) {
return false;
}
}
}
return true;
}
};
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.