728x90
반응형
문제
분석
문제가 길다.
천천히 읽어 나갈 필요가 있다.
읽어보니 채팅방의 입장퇴장 그리고 ID 변경에 대한 Log를 기록하는 문제이다.
문제핵심
1. 닉네임은 변경가능하다. 중복도 허용한다.
2. 최종 출력은 변경된 닉네임으로 보여줘야 한다.
3. 입력은 다음과같다.
커맨드 유저아이디 닉네임
문제는 3단계로 나누어 풀수 있을 것같다.
1. 입력 받은값 Parsing
감사하게도 입력값은 space 로 나뉘어져 있다
간단하게 stringstream 으로 나누자
2. 유저 아이디에 따른 닉네임변경(닉네임은 중복허용)
키값으로 UserId를 정하고 닉네임을 value로 정할수 있겠다.
map 을 사용하면 되겠다.
3. 최종 변경된 ID로 메세지 출력해주기
위에 저장 된 map을 양식에 맞게 출력해준다.
구현
c++
#include <string>
#include <vector>
#include <sstream>
#include <iostream>
#include <map>
using namespace std;
vector<string> solution(vector<string> record) {
vector<string> answer;
string command;
string ID;
string uid;
map<string, string> m;
for(string input:record)
{
stringstream ss(input);
ss >> command;
ss >> uid;
if (command=="Enter" || command=="Change")
{
ss >> ID;
m[uid]=ID;
}
}
for(string input:record)
{
stringstream ss(input);
ss >> command;
ss >> uid;
if(command=="Enter")
{
ID=(m.find(uid)->second);
string temp = ID+"님이 들어왔습니다.";
answer.push_back(temp);
}
else if(command=="Leave")
{
ID=(m.find(uid)->second);
string temp = ID+"님이 나갔습니다.";
answer.push_back(temp);
}
}
return answer;
}
java
import java.util.*;
class Solution {
public String[] solution(String[] record) {
ArrayList<String> log = new ArrayList();
HashMap<String, String> map = new HashMap<String,String>();
String command;
String id;
String nickName;
for (int i = 0; i < record.length; i++) {
String[] columnData = record[i].split(" ");
command = columnData[0];
id = columnData[1];
if ((command.compareTo("Enter") == 0) || (command.compareTo("Change") == 0)) {
nickName = columnData[2];
map.put(id, nickName);
}
}
for (String input : record)
{
String[] columnData = input.split(" ");
command = columnData[0];
id = columnData[1];
if (command.compareTo("Enter") == 0) {
nickName = map.get(id);
String message = nickName+"님이 들어왔습니다.";
log.add(message);
} else if (command.compareTo("Leave") == 0) {
nickName = map.get(id);
String message = nickName+"님이 나갔습니다.";
log.add(message);
}
}
String[] answer = new String[log.size()];
answer = log.toArray(answer);
return answer;
}
}
문제링크
: https://programmers.co.kr/learn/courses/30/lessons/42888
728x90
반응형
'Algorithm > 프로그래머스 알고리즘' 카테고리의 다른 글
[프로그래머스] 이진변환 반복 (0) | 2021.06.14 |
---|---|
[프로그래머스] 스킬트리 (0) | 2021.06.12 |
[프로그래머스] 방문 길이 (0) | 2021.05.15 |
[프로그래머스] 다트게임 (0) | 2021.05.15 |
[프로그래머스] 문자열 압축 (0) | 2021.05.15 |
댓글