250x250
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 막내의막무가내
- 막내의막무가내 코틀린 안드로이드
- 부스트코스에이스
- 막내의막무가내 안드로이드 코틀린
- 막내의막무가내 코틀린
- 프로그래머스 알고리즘
- 부스트코스
- 막내의막무가내 프로그래밍
- 막내의막무가내 SQL
- 막내의 막무가내
- 주택가 잠실새내
- 2022년 6월 일상
- 막내의막무가내 코볼 COBOL
- 막내의막무가내 플러터 flutter
- 막내의막무가내 목표 및 회고
- 프래그먼트
- flutter network call
- 막내의막무가내 안드로이드
- 주엽역 생활맥주
- 안드로이드 Sunflower 스터디
- 막내의막무가내 일상
- 안드로이드 sunflower
- 막내의막무가내 알고리즘
- 안드로이드
- 막내의막무가내 안드로이드 에러 해결
- 막내의막무가내 rxjava
- 막무가내
- Fragment
- 막내의막무가내 플러터
- 막내의 막무가내 알고리즘
Archives
- Today
- Total
막내의 막무가내 프로그래밍 & 일상
[알고리즘] 프로그래머스 오픈채팅방 -2019 KAKAO BLIND RECRUITMENT- -해시(Hash)- 본문
728x90
https://programmers.co.kr/learn/courses/30/lessons/42888?language=kotlin
프로그래머스 LEVEL2 문제 오픈채팅방을 풀어봤습니다. ㅎㅎ
문제 풀이법은 HashMap으로 풀어야겠다고 바로 생각나서 쉽게 접근할 수 있었습니다.
1. HashMap 으로 마지막으로 추가 혹은 변경된 이름을 저장하게 합니다. uid를 key로 이름을 value로
2. 출력 문장을 만들어 줍니다. Levae는 두 단어인거 주의
3. 리스트를 배열로 변환 해서 리턴 ( 그냥 toArray 하면안됨 주의)
answer = result.toArray(new String[result.size()]);
풀이는 다음과 같습니다.
[Java]
import java.util.ArrayList;
import java.util.HashMap;
class Solution {
public static void main(String[] args) {
Solution solution = new Solution();
solution.solution(new String[]{"Enter uid1234 Muzi", "Enter uid4567 Prodo", "Leave uid1234", "Enter uid1234 Prodo", "Change uid4567 Ryan"});
}
public String[] solution(String[] record) {
HashMap<String, String> map = new HashMap();
ArrayList<String> result = new ArrayList<>();
String[] answer = {};
// 최종 이름 설정
for (String str : record) {
switch (str.split(" ")[0]) {
case "Enter":
case "Change":
String uid = str.split(" ")[1];
String name = str.split(" ")[2];
map.put(uid, name);
break;
}
}
// 출력문 만들기
for (String str : record) {
switch (str.split(" ")[0]) {
case "Enter":
result.add(map.get(str.split(" ")[1] ) + "님이 들어왔습니다.");
break;
case "Leave":
result.add(map.get(str.split(" ")[1]) + "님이 나갔습니다.");
break;
}
}
answer = result.toArray(new String[result.size()]);
return answer;
}
}
[Kotlin]
import java.util.*
class Solution {
fun solution(record: Array<String>): Array<String> {
val map = HashMap<String, String>()
val result = ArrayList<String>()
val answer: Array<String>
for (str in record) {
when (str.split(" ".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()[0]) {
"Enter", "Change" -> {
val uid = str.split(" ".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()[1]
val name = str.split(" ".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()[2]
map[uid] = name
}
}
}
for (str in record) {
when (str.split(" ".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()[0]) {
"Enter" -> result.add(map.get(str.split(" ".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()[1]) + "님이 들어왔습니다.")
"Leave" -> result.add(map.get(str.split(" ".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()[1]) + "님이 나갔습니다.")
}
}
answer = result.toTypedArray()
return answer
}
companion object {
@JvmStatic
fun main(args: Array<String>) {
val solution = Solution()
solution.solution(arrayOf("Enter uid1234 Muzi", "Enter uid4567 Prodo", "Leave uid1234", "Enter uid1234 Prodo", "Change uid4567 Ryan"))
}
}
}
댓글과 공감은 큰 힘이 됩니다. 감사합니다!!
728x90
'알고리즘 > 해시' 카테고리의 다른 글
[알고리즘] 프로그래머스 [3차] 압축 (2018 KAKAO BLIND RECRUITMENT) -해시, 맵- 자바 (0) | 2021.08.09 |
---|---|
[알고리즘] 백준 9375 패션왕 신해빈 -해시(hash)- 자바 (0) | 2020.11.27 |
[알고리즘] 프로그래머스 위장 -해시(hash)- (0) | 2020.05.16 |
[알고리즘] 프로그래머스 전화번호 목록 -해시(Hash)- (0) | 2020.05.14 |
[알고리즘] 프로그래머스 완주하지 못한 선수 -hash- (0) | 2020.02.05 |
Comments