[프로그래머스 / 2018 KAKAO BLIND RECRUITMENT / 자바(JAVA)] [3차] 압축
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/17684
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
[ 요약 ]
더보기
시작 시간 : PM 5:15
종료 시간 : PM 5:50
소요 시간(분) : 35분
도전 횟수 (제출 횟수) : 1
로직 및 풀이 참고 여부 : X
[ 풀어보기 ]
정답 풀이
📌 로직
📌 코드
import java.util.*;
class Solution {
Map<String, Integer> dic = new HashMap<>();
public int[] solution(String msg) {
List<Integer> answerArray = new ArrayList<>();
// 길이가 1인 모든 단어를 포함하도록 사전 만들기
for(int i=0; i<26; i++) {
dic.put((char)('A'+i)+"", i+1);
}
int last = 26; // 사전 마지막 수
StringBuffer sb = new StringBuffer();
char[] msgArray = msg.toCharArray();
sb.append(msgArray[0]);
for(int i=0; i<msgArray.length-1; i++) {
// 1. 먼저 msgArray[i] (=w)를 꺼내오고, 그에 맞는 색인번호를 가지고 있는다.
int num = dic.get(sb.toString() + "");
// 2. dic에 "w+c" 가 있는지 없는지 살펴본다.
sb.append(msgArray[i+1]);
// w+c가 있으면 -> 다음 반복문으로 넘어간다.
if(dic.getOrDefault(sb.toString(), 0) != 0) continue;
// w+c가 없으면 -> 사전에 w+c를 추가하고, num을 answerArray에 추가한다.
dic.put(sb.toString(), last+1);
sb.setLength(0); // 사전에 추가된 sb는 비워준다.
last++;
answerArray.add(num);
sb.append(msgArray[i+1]); // msgArray[i]를 꺼내오는 작업을 여기로..
}
answerArray.add(dic.get(sb.toString())); // 마지막으로 처리되지 않은 글자 처리
return answerArray.stream().mapToInt(i -> i).toArray();
}
}
📌 채점 결과
정확성 테스트
테스트 1 〉 통과 (15.92ms, 83.8MB)
테스트 2 〉 통과 (15.20ms, 78.4MB)
테스트 3 〉 통과 (14.42ms, 81.5MB)
테스트 4 〉 통과 (14.64ms, 79.8MB)
테스트 5 〉 통과 (15.07ms, 77.1MB)
테스트 6 〉 통과 (20.88ms, 83.3MB)
테스트 7 〉 통과 (14.37ms, 80.9MB)
테스트 8 〉 통과 (15.54ms, 72.7MB)
테스트 9 〉 통과 (12.24ms, 75.1MB)
테스트 10 〉 통과 (12.33ms, 84MB)
테스트 11 〉 통과 (13.14ms, 82.1MB)
테스트 12 〉 통과 (12.61ms, 82.9MB)
테스트 13 〉 통과 (14.00ms, 80.2MB)
테스트 14 〉 통과 (17.58ms, 71.8MB)
테스트 15 〉 통과 (15.87ms, 74.7MB)
테스트 16 〉 통과 (19.35ms, 86.7MB)
테스트 17 〉 통과 (13.60ms, 77.9MB)
테스트 18 〉 통과 (16.41ms, 74.5MB)
테스트 19 〉 통과 (13.87ms, 74.8MB
테스트 20 〉 통과 (12.50ms, 79.5MB)
채점 결과
정확성: 100.0
합계: 100.0 / 100.0
한 번만에 풀어서 뿌듯하구만 ... ^-^
'코딩테스트 - 프로그래머스 > JAVA' 카테고리의 다른 글
[프로그래머스 / 완전탐색 / 자바(JAVA)] 모음사전 (0) | 2024.05.22 |
---|---|
[프로그래머스 / 2018 KAKAO BLIND RECRUITMENT / 자바(JAVA)] [3차] n진수 게임 (0) | 2024.05.21 |
[프로그래머스 / 깊이/너비 우선 탐색(DFS/BFS) / 자바(JAVA)] 게임 맵 최단거리 (1) | 2024.05.19 |
[프로그래머스 / 2022 KAKAO BLIND RECRUITMENT / 자바(JAVA)] k진수에서 소수 개수 구하기 (0) | 2024.05.17 |
[프로그래머스 / 해시 / 자바(JAVA)] 전화번호 목록 (0) | 2024.05.09 |