https://programmers.co.kr/learn/courses/30/lessons/42888
νλ‘κ·Έλλ¨Έμ€ νλ«νΌμ μ¬λΌμμλ 2019 KAKAO BLIND RECRUITMENT "μ€νμ±ν λ°©" λ¬Έμ νμ΄μ΄λ€.
κ΄λ¦¬μ λ©μμ§λ λ€μ΄κ° λ, λκ° λλ§ κΈ°λ‘νλ©΄ λμ§λ§ μ¬μ©μκ° μ΄λ¦μ λ³κ²½νλ©΄ μ§λ μ΄λ ₯λ λ°λμ΄μΌ νλ―λ‘ λ§μ§λ§μΌλ‘ λ°λ μ΄λ¦μ μμμΌ νλ€.
첫 λ²μ§Έ λ°©λ² (μκ° μ΄κ³Ό)
첫 λ²μ§Έλ‘ μκ°νλ λ°©λ²μ μλμ κ°λ€.
μ΄λ ₯μ ν μ€μ© μ½μΌλ©΄μ λ€μ΄κ° λ λλ λκ° λλ©΄ 맨 λμμλΆν° μ΄λ ₯μ μ½μΌλ©΄μ λ§μ§λ§μΌλ‘ λ°λ μ΄λ¦μ μ‘°νν΄μ€λλ‘ μ½λλ₯Ό μ§°λ€.
λ€μμλΆν° μ½μΌλ©΄μ λ°λ μ΄λ¦μ μ°ΎμΌλ©΄ λ°λ³΅ νμκ° μ μ΄ μκ°μ΄ λ μ κ² λ€ μ€ μμμ§λ§ λ°μ΄ν°μ λ°λΌ μ€λ 걸리λ κ²½μ°κ° μμ΄μ μκ° μ΄κ³Όλ‘ ν΅κ³Όνμ§ λͺ»νλ€.
import java.util.*;
class Solution {
public String[] solution(String[] records) {
List<String> result = new ArrayList<>();
for (String record : records) {
if (record.startsWith("Enter") || record.startsWith("Leave")) {
String[] splitedRecord = record.split(" ");
String name = getLastName(records, splitedRecord[1]);
if (record.startsWith("Enter")) {
result.add(name + "λμ΄ λ€μ΄μμ΅λλ€.");
} else {
result.add(name + "λμ΄ λκ°μ΅λλ€.");
}
}
}
return result.toArray(new String[result.size()]);
}
public String getLastName(String[] records, String userId) {
for (int i = records.length - 1; i >= 0; i--) {
String record = records[i];
if (record.startsWith("Enter") || record.startsWith("Change")) {
String[] splitedRecord = record.split(" ");
if (splitedRecord[1].equals(userId)) {
return splitedRecord[2];
}
}
}
return "";
}
}
λ λ²μ§Έ λ°©λ²
λ§μ§λ§μΌλ‘ λ°λ μ΄λ¦μ μ΄λ ₯μμ λ§€λ² μ‘°νν΄μ€λ κ²μ΄ λΉν¨μ¨μ μΈ κ² κ°μ μ μ μμ΄λλ₯Ό ν€λ‘νλ 맡μ μ μ₯νλλ‘ λ³κ²½νλ€.
μ μ μμ΄λλ³ μ΅μ’ λ³κ²½λ μ΄λ¦μ μ μ₯νλ λ°λ³΅λ¬Έκ³Ό μ΄λ ₯μ κΈ°λ‘νλ λ°λ³΅λ¬Έμ λ°λ‘ λλ € μ΄ μ΄λ ₯μ 2λ² νμΈνκΈ° λλ¬Έμ μ’μ§ μμ λ°©λ²μ΄κΈ΄ νμ§λ§ ν΅κ³Όνλ€.
import java.util.*;
class Solution {
public String[] solution(String[] records) {
List<String> answer = new ArrayList<>(); // κ²°κ³Ό λ¬Έμμ΄ λ¦¬μ€νΈ
Map<String, String> map = new HashMap<>(); // μ΅μ’
λ³κ²½λ idμ nameμ μ
// μ
λ ₯λ λ³κ²½ κΈ°λ‘ μ€ Enter, Change μλ§λ€ μ μ μμ΄λ λ³ μ΄λ¦μ μ μ₯ν¨
for (String record : records) {
if (!record.startsWith("Leave")) {
String[] info = record.split(" ");
map.put(info[1], info[2]);
}
}
// μ¬μ©μκ° λ€μ΄μ€κ±°λ λκ° κΈ°λ‘μ λ©μμ§λ‘ λ³κ²½
// μ¬μ©μ μ΄λ¦μ μ΅μ’
μ 보λ₯Ό μ μ₯ν 맡μμ κ°μ Έμ΄
for (String record : records) {
if (!record.startsWith("Change")) {
String[] info = record.split(" ");
if (record.startsWith("Enter")) {
answer.add(map.get(info[1]) + "λμ΄ λ€μ΄μμ΅λλ€.");
} else if (record.startsWith("Leave")) {
answer.add(map.get(info[1]) + "λμ΄ λκ°μ΅λλ€.");
}
}
}
return answer.toArray(new String[answer.size()]);
}
}
μΈ λ²μ§Έ λ°©λ²
맡μ μ¬μ©νλκΉ νμ₯μ±, κ°λ μ± μΈ‘λ©΄μμ νκ³κ° μμ΄μ Dtoλ₯Ό μ¬μ©νλλ‘ λ³κ²½ν΄λ³΄μλ€.
λν, λ¬Έμμ΄ ν¬λ§·μ μ¬μ©ν΄μ λ³κ²½μ΄ μ½λλ‘ νλ©° μ λμ μΈ λ¬Έμμ΄ λΆλΆμ 맡μμ μ‘°νν΄μ€λ μ΄λ¦μΌλ‘ μΉννμ¬ λ λ²μ§Έ λ°©λ²κ³Ό λ‘μ§μ λΉμ·νλ€.
import java.util.*;
class Solution {
private static final String ENTER_FORMAT = "%sλμ΄ λ€μ΄μμ΅λλ€.";
private static final String LEAVE_FORMAT = "%sλμ΄ λκ°μ΅λλ€.";
private class User {
public String userId;
public String name;
public User(String userId, String name) {
this.userId = userId;
this.name = name;
}
}
private class Command {
public String command;
public String name;
public Command(String command, String name) {
this.command = command;
this.name = name;
}
}
public String[] solution(String[] records) {
List<Command> commandList = new ArrayList<>();
Map<String, User> userMap = new HashMap<>();
for (String record : records) {
String[] split = record.split(" ");
String command = split[0];
String userId = split[1];
String name = null;
switch(command) {
case "Enter": // λ€μ΄κ° λ μ μ μμ΄λλ³λ‘ μ¬μ©μ μ 보(μ μ μμ΄λ, μ΄λ¦) μ
λ°μ΄νΈ + μ΄λ ₯
name = split[2];
userMap.put(userId, new User(userId, name));
commandList.add(new Command(command, userId));
break;
case "Leave": // λκ° λλ μ΄λ ₯λ§
commandList.add(new Command(command, userId));
break;
case "Change": // λ³κ²½ν λλ κΈ°μ‘΄ 맡μ μ μ₯λ μ 보 λ³κ²½
name = split[2];
userMap.get(userId).name = name;
break;
}
}
return commandList.stream()
// μ μ₯λ λ©μμ§μ νμμ λ³κ²½ν¨(Enter -> ~λ€μ΄μμ΅λλ€.)
// μΆλ ₯ν μ΄λ¦μ 맡μ μ μ₯λ κ°μΌλ‘ λ³κ²½ν¨
.map(msg -> String.format(msg.command.equals("Enter") ? ENTER_FORMAT : LEAVE_FORMAT, userMap.get(msg.name).name))
.toArray(ary -> new String[commandList.size()]);
}
}
'κ°λ° > μλ£κ΅¬μ‘° & μκ³ λ¦¬μ¦' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μ«μ λ¬Έμμ΄κ³Ό μλ¨μ΄ (Java) (0) | 2021.10.26 |
---|---|
λ¬Έμμ΄ μμΆ (Java) (0) | 2021.10.25 |
λ‘λμ μ΅κ³ μμμ μ΅μ μμ (Java) (0) | 2021.10.24 |
μ κ· μμ΄λ μΆμ² (Java) (0) | 2021.10.24 |
μ°½κ³ λ€κ°ν (Java) (0) | 2021.10.21 |
λκΈ