반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- codility
- QA엔지니어
- 벤쿠버 렌트
- IntelliJ
- binaray_gap
- BC렌트
- Java
- 프로그래머스
- 리눅스
- 데이터의 무결성
- database연결
- 레노보노트북
- 언마운트
- 설탕문제
- 벤쿠버집구하기
- Linux
- Lesson3
- 부산입국
- 자바
- 백준알고리즘
- 외래키설정
- Lesson2
- FIDO 환불
- FK 설정
- 파이도 환불
- 캐나다워홀
- 1463번
- FLEX5
- 벤쿠버렌트
- 엔테크서비스
Archives
- Today
- Total
대충이라도 하자
프로그래머스 - 오픈채팅방 (2019 KAKAO BLIND RECUITMENT) 본문
반응형
1. 처음에는 구현에만 집중했다. 그러다보니 비슷한 구조의 for문이 2개가 탄생...
import java.util.*;
class Solution {
public String[] solution(String[] record) {
ArrayList<String> answers = new ArrayList<>();
HashMap <String, String> map = new HashMap<>();
for(String str : record) {
String [] arr = str.split(" ");
switch(arr[0]) {
case "Enter":
map.put(arr[1], arr[2]);
break;
case "Change" :
map.put(arr[1], arr[2]);
break;
default :
break;
}
}
for(String str :record) {
String [] arr = str.split(" ");
String result = "";
switch(arr[0]) {
case "Enter":
answers.add(map.get(arr[1]) +"님이 들어왔습니다.");
break;
case "Leave" :
answers.add(map.get(arr[1]) +"님이 나갔습니다.");
break;
default :
break;
}
}
String [] answer = new String[answers.size()];
for(int i = 0; i<answers.size();i++){
answer[i] = answers.get(i);
}
return answer;
}
}
테스트 1 〉 | 통과 (3.10ms, 72.8MB) |
테스트 2 〉 | 통과 (2.43ms, 75.3MB) |
테스트 3 〉 | 통과 (2.50ms, 72.9MB) |
테스트 4 〉 | 통과 (3.52ms, 82.1MB) |
테스트 5 〉 | 통과 (6.21ms, 78.8MB) |
테스트 6 〉 | 통과 (7.51ms, 89.2MB) |
테스트 7 〉 | 통과 (6.12ms, 80.4MB) |
테스트 8 〉 | 통과 (6.33ms, 81.5MB) |
테스트 9 〉 | 통과 (8.09ms, 85MB) |
테스트 10 〉 | 통과 (6.43ms, 83.6MB) |
테스트 11 〉 | 통과 (5.01ms, 87.7MB) |
테스트 12 〉 | 통과 (4.29ms, 76.9MB) |
테스트 13 〉 | 통과 (5.34ms, 77.3MB) |
테스트 14 〉 | 통과 (5.56ms, 80.6MB) |
테스트 15 〉 | 통과 (2.12ms, 72.5MB) |
테스트 16 〉 | 통과 (2.17ms, 75.4MB) |
테스트 17 〉 | 통과 (3.06ms, 80.6MB) |
테스트 18 〉 | 통과 (3.10ms, 76.8MB) |
테스트 19 〉 | 통과 (5.64ms, 85.2MB) |
테스트 20 〉 | 통과 (4.74ms, 68.7MB) |
테스트 21 〉 | 통과 (6.30ms, 82.1MB) |
테스트 22 〉 | 통과 (6.83ms, 76MB) |
테스트 23 〉 | 통과 (7.69ms, 71.7MB) |
테스트 24 〉 | 통과 (5.36ms, 79.2MB) |
테스트 25 〉 | 통과 (104.02ms, 199MB) |
테스트 26 〉 | 통과 (103.38ms, 184MB) |
테스트 27 〉 | 통과 (114.35ms, 188MB) |
테스트 28 〉 | 통과 (105.17ms, 208MB) |
테스트 29 〉 | 통과 (129.09ms, 201MB) |
테스트 30 〉 | 통과 (100.61ms, 186MB) |
테스트 31 〉 | 통과 (115.47ms, 200MB) |
테스트 32 〉 | 통과 (94.61ms, 195MB) |
2. 비슷한 부분을 어떻게 줄일 수 있을까 고민했고, queue에 넣어 가지고 오는 방식으로 구현...
ArrayList를 array로 변경하는 과정에서 시간이 많이 소용되는 거 같아 바로 array에 넣는 방식으로 구현했는데
인덱싱보다 삽입이 많아서 그런지 오히려 효율이 떨어지는 거 같다.
import java.util.*;
class Solution {
public String[] solution(String[] record) {
ArrayList<String> answers = new ArrayList<>();
HashMap <String, String> map = new HashMap<>();
Queue <String> q = new LinkedList<>();
for(String str : record) {
String [] arr = str.split(" ");
switch(arr[0]) {
case "Enter":
map.put(arr[1], arr[2]);
q.add(arr[1]);
break;
case "Leave" :
q.add("-"+arr[1]);
break;
case "Change" :
map.put(arr[1], arr[2]);
break;
default :
break;
}
}
while(!q.isEmpty()){
String check = q.poll();
if(check.charAt(0) == '-') {
answers.add(map.get(check.substring(1)) +"님이 나갔습니다.");
}else {
answers.add(map.get(check) +"님이 들어왔습니다.");
}
}
String [] answer = new String[answers.size()];
for(int i = 0; i<answers.size();i++){
answer[i] = answers.get(i);
}
return answer;
}
}
테스트 1 〉 | 통과 (2.53ms, 75.1MB) |
테스트 2 〉 | 통과 (2.76ms, 80.4MB) |
테스트 3 〉 | 통과 (2.66ms, 72.2MB) |
테스트 4 〉 | 통과 (2.65ms, 84.3MB) |
테스트 5 〉 | 통과 (8.23ms, 93.7MB) |
테스트 6 〉 | 통과 (5.36ms, 78.8MB) |
테스트 7 〉 | 통과 (5.70ms, 78.5MB) |
테스트 8 〉 | 통과 (6.91ms, 78MB) |
테스트 9 〉 | 통과 (5.47ms, 80.9MB) |
테스트 10 〉 | 통과 (5.95ms, 79.4MB) |
테스트 11 〉 | 통과 (5.48ms, 80.1MB) |
테스트 12 〉 | 통과 (4.83ms, 79.3MB) |
테스트 13 〉 | 통과 (7.97ms, 79.7MB) |
테스트 14 〉 | 통과 (5.84ms, 80.6MB) |
테스트 15 〉 | 통과 (2.64ms, 75.7MB) |
테스트 16 〉 | 통과 (2.29ms, 72.9MB) |
테스트 17 〉 | 통과 (3.20ms, 78.3MB) |
테스트 18 〉 | 통과 (2.90ms, 75.9MB) |
테스트 19 〉 | 통과 (5.83ms, 76.1MB) |
테스트 20 〉 | 통과 (6.37ms, 86.1MB) |
테스트 21 〉 | 통과 (6.28ms, 85.4MB) |
테스트 22 〉 | 통과 (6.72ms, 81.9MB) |
테스트 23 〉 | 통과 (6.57ms, 73.4MB) |
테스트 24 〉 | 통과 (5.79ms, 77.5MB) |
테스트 25 〉 | 통과 (76.70ms, 181MB) |
테스트 26 〉 | 통과 (114.45ms, 195MB) |
테스트 27 〉 | 통과 (108.27ms, 201MB) |
테스트 28 〉 | 통과 (105.61ms, 216MB) |
테스트 29 〉 | 통과 (97.49ms, 194MB) |
테스트 30 〉 | 통과 (83.80ms, 174MB) |
테스트 31 〉 | 통과 (81.62ms, 189MB) |
테스트 32 〉 | 통과 (80.30ms, 175MB) |
반응형
'꼬꼬마 개발자 노트 > Coding Problems' 카테고리의 다른 글
프로그래머스 - 거리두기 확인하기 (0) | 2022.01.05 |
---|---|
프로그래머스-멀쩡한 사각형 (0) | 2022.01.04 |
프로그래머스 2020 kakao blind recruitment 문자열 (0) | 2021.10.21 |
프로그래머스 없는 숫자 더하기 (0) | 2021.10.21 |
프로그래머스 - 로또의 최고 순위와 최저 순위 (java) (0) | 2021.10.12 |
Comments