티스토리 뷰
leetcode.com/problems/subdomain-visit-count/submissions/
웹 사이트 도메인, 서브도메인의 방문횟수 를 구하는 문제이다.
Input값으로 문자열 배열이 주어진다.
원소 하나에는 도메인과 도메인의 방문횟수가 띄어쓰기로 구분한 하나의 문자열로 주어진다.
그리고 배열의 각 원소에서 도메인, 서브 도메인에 대한 총 방문횟수를 구해서 배열로 return 해주면 된다.
ex)
1.
input : ["9001 discuss.leetcode.com"]
output : ["9001 discuss.leetcode.com", "9001 leetcode.com", "9001 com"]
2.
input : ["900 google.mail.com", "50 yahoo.com", "1 intel.mail.com", "5 wiki.org"]
output : ["901 mail.com","50 yahoo.com","900 google.mail.com","5 wiki.org","5 org","1 intel.mail.com","951 com"]
class Solution {
public:
vector<string> subdomainVisits(vector<string>& cpdomains) {
map<string, int> subDomain;
string tmp;
for (int i = 0; i < cpdomains.size(); i++) {
vector<string> streamArr;
streamArr.clear();
streamArr = splitString(cpdomains[i], ' ');
vector<string> piece;
piece.clear();
piece = splitString(streamArr[1], '.');
reverse(piece.begin(), piece.end());
tmp = "";
for (int j = 0; j < piece.size(); j++) {
if (j == 0) tmp = piece[j];
else tmp = piece[j] + '.' + tmp;
if (subDomain.find(tmp) == subDomain.end()) {
subDomain.insert(pair<string, int>(tmp, stoi(streamArr[0])));
}
else {
subDomain.find(tmp)->second = subDomain.find(tmp)->second + stoi(streamArr[0]);
}
}
}
vector<string> answer;
for (map<string, int>::iterator it = subDomain.begin(); it != subDomain.end(); it++) {
answer.push_back(to_string(it->second) + " " + it->first);
}
return answer;
}
vector<string> splitString(string object, char delimeter) {
vector<string> re;
re.clear();
string buffer;
istringstream ss(object);
while (getline(ss, buffer, delimeter)) {
re.push_back(buffer);
}
return re;
}
};
문제 풀이
먼저 input배열을 받으면 공백문자 기준으로 나누어 배열로 만든다
그리고 공백문자로 나눈 배열의 2번째 문자열을 다시 '.'을 기준으로 나누어 배열로 만든다.
그리고 해당 배열을 거꾸로 뒤집는다.
"discuss.leetcode.com"라는 문자열이 있다면, com, leetcode, discuss 라는 순서로 오게된다.
그런 다음 배열을 순차적으로 진행시키며 com에 대한 방문횟수, leetcode.com에 대한 방문횟수, discuss에 대한 방문횟수를 <도메인명, 방문횟수>의 형태로 map에 담는다. 만약 도메인 명이 중복된다면 기존 방문횟수에서 새로받은 방문횟수를 증가시켜서 저장시킨다.
그리고 해당 map으로 다시 return규칙에 따른 배열을 만들어 return하면 끝.
'알고리즘 문제 풀이' 카테고리의 다른 글
[알고리즘문제] 릿코드 Design Hash Set (0) | 2021.04.08 |
---|---|
[알고리즘문제] 릿코드 Find Common Characters (0) | 2021.04.07 |
[알고리즘문제] 릿코드 Employee Importance 문제풀이실패 (0) | 2021.04.05 |
[알고리즘문제] 릿코드 N-Repeated Element in Size 2N Array (0) | 2021.04.04 |
[알고리즘문제풀이] 릿코드 Sum of Unique Elements (0) | 2021.04.04 |