반응형
https://leetcode.com/problems/path-crossing/description/
구현 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
1. x, y 좌표를 저장할 구조체 Coord 를 선언해줍니다.2. map을 사용할 건데 구조체를 key로 설정시 operator <에 대해 override해줘야합니다.x좌표끼리 먼저 비교하고 x좌표가 같으면 y좌표를 비교하도록 재정의해줍니다.
📔 풀이과정
1. 좌표 coord를 선언 후 0,0으로 초기화해줍니다.2. key로는 좌표, 방문 여부를 value인 map visitMap을 선언 후 coord를 방문해줍니다.3. path의 원소를 순회하며 다음을 수행합니다. 3-1. 방향에 따라 coord 좌표를 갱신해줍니다. 3-2. visitMap에 갱신된 coord좌표가 이미 있다면 방문을 이미 했다는 뜻이므로 true를 반환합니다. 3-3. 없다면 visitMap에 갱신된 coord를 방문해줍니다.
📔 정답 출력 | 반환
이전 좌표를 한 번도 방문할 수 없는 길이라면 false를 반환해줍니다.
📕 Code
📔 C++
struct Coord {
int x, y;
bool operator<(const Coord& other) const {
return x < other.x || (x == other.x && y < other.y);
}
};
class Solution {
public:
bool isPathCrossing(string path) {
Coord coord = {0,0};
map <Coord, bool> visitMap;
visitMap[coord] = true;
for(auto p : path) {
if (p == 'N') {
coord.y++;
} else if (p == 'E') {
coord.x++;
} else if (p == 'S') {
coord.y--;
} else {
coord.x--;
}
if (visitMap.count(coord)) return true;
visitMap[coord] = true;
}
return false;
}
};
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Algorithm > Implementation' 카테고리의 다른 글
(C++) - LeetCode (easy) 1507. Reformat Date (0) | 2024.04.11 |
---|---|
(C++) - LeetCode (easy) 1496. Path Crossing (0) | 2024.04.08 |
(C++) - LeetCode (easy) 1491. Average Salary Excluding the Minimum and Maximum Salary (0) | 2024.04.04 |
(C++) - LeetCode (easy) 1486. XOR Operation in an Array (0) | 2024.04.03 |
(Python) - LeetCode (easy) 1480. Running Sum of 1d Array (0) | 2024.04.01 |