반응형
#INFO
난이도 : SILVER5
문제 유형 : 자료구조
출처 : https://www.acmicpc.net/problem/7785
#SOLVE
공백과 함께 문자열을 입력 받아야 하기에 cin이 아닌 getline 함수를 이용해 문자열을 입력받습니다.
입력받은 문자열은 enterLog에 저장합니다.
int n = 0;
cin >> n;
vector<string> enterLog(n);
cin.ignore(); // berfer clear
for(int i = 0; i < n; ++i){
getline(cin, enterLog[i]);
}
회사원들의 출입 여부를 기록할 isEntered map 자료구조를 하나 선언합니다.
map<string, string> isEntered;
다음으로 공백을 기준으로 문자열을 파싱합니다.
사람들의 이름은 from 변수에, 출퇴근 여부(enter or leave)는 to 변수에 저장합니다.
반약 to 변수의 값이 "enter" 출근 이라면 map 자료구조에 저장하고, 변수의 값이 "leave' 퇴근 이라면 map 자료구조에 저장된 정보를 삭제합니다.
// String-Parsing
for(int i = 0; i < n; ++i){
int blank = enterLog[i].find(' ');
string from = enterLog[i].substr(0, blank);
string to = enterLog[i].substr(blank + 1);
if(to == "enter"){
isEntered.insert(make_pair(from, to));
}
else{
isEntered.erase(from);
}
}
C++ STL map은 키값을 순서대로 저장하기에, reverse_iterator를 이용해 map에 저장된 key값을 뒤에서 부터 차례대로 출력하면 됩니다.
map<string, string>::reverse_iterator it;
for(it = isEntered.rbegin(); it != isEntered.rend(); it++){
cout << (*it).first << '\n';
}
#CODE
#include <iostream>
#include <vector>
#include <map>
#include <string>
using namespace std;
int main(){
int n = 0;
cin >> n;
vector<string> enterLog(n);
cin.ignore(); // berfer clear
for(int i = 0; i < n; ++i){
getline(cin, enterLog[i]);
}
map<string, string> isEntered;
// String-Parsing
for(int i = 0; i < n; ++i){
int blank = enterLog[i].find(' ');
string from = enterLog[i].substr(0, blank);
string to = enterLog[i].substr(blank + 1);
if(to == "enter"){
isEntered.insert(make_pair(from, to));
}
else{
isEntered.erase(from);
}
}
map<string, string>::reverse_iterator it;
for(it = isEntered.rbegin(); it != isEntered.rend(); it++){
cout << (*it).first << '\n';
}
return 0;
}
도움이 되셨다면 하단의 공감 부탁드립니다!
반응형
'Archive2 > ProblemSolving' 카테고리의 다른 글
[프로그래머스 고득점 Kit] 폰켓몬 C++ 문제 풀이 (0) | 2022.09.11 |
---|---|
[프로그래머스 고득점 Kit] 완주하지 못한 선수 C++ 문제 풀이 (0) | 2022.09.10 |
[BOJ] C++ 1620 "나는야 포켓몬 마스터 이다솜" 문제 풀이 (0) | 2022.09.05 |
[LeetCode] 70. Climbing Stairs 문제 풀이 C++ (0) | 2022.09.03 |
[LeetCode] 169. Majority Element 문제 풀이 C++ (feat. 과반수 투표 알고리즘) (0) | 2022.09.03 |