https://school.programmers.co.kr/learn/courses/30/lessons/17684
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나는 무엇때문에 이렇게 까지 고민을 했던걸까...?
너무 한번에 같이 실행하려고 해서 생긴 혼란...이랄까?
이 문제는 문제에서 주어진 W , C , W+C 를 보면 답이 보이는 문제이다.
static HashMap<String, Integer> hm;
public int[] solution(String msg) {
ArrayList<Integer> list = new ArrayList<Integer>();
hm = new HashMap<String, Integer>();
for(int i = 0; i < 26; i++) {
char c = (char)(65 + i);
hm.put(""+c, i+1);
}
String w = "";
String c = "";
int num = 0; //압축번호
for(int i = 0; i < msg.length(); i++) {
w += msg.charAt(i); //현재글자
num = addNum(w);
if(i + 1 < msg.length()) {
c = "" + msg.charAt(i+1);
String wc = w+c;
if(addNum(wc) != -1) {
continue;
}
w = wc;
}
list.add(num);
addMap(w);
w = "";
}
int[] arr = new int[list.size()];
for(int i = 0; i< list.size(); i++) {
arr[i] = list.get(i);
}
return arr;
}
private void addMap(String str) {
hm.put(str, hm.size()+1);
}
private int addNum(String w) {
int num = -1;
if(hm.containsKey(w)) {
num = hm.get(w);
}
return num;
}
'코딩테스트 > programmers' 카테고리의 다른 글
[level3] 야근지수 JAVA (0) | 2022.11.24 |
---|---|
[level3] 정수 삼각형 JAVA (0) | 2022.11.21 |
[level2] [1차] 뉴스 클러스터링 JAVA (0) | 2022.11.16 |
[level2] 주차 요금 계산 JAVA (0) | 2022.11.15 |
[JAVA] 3진법 뒤집기 (0) | 2022.09.16 |