본문으로 바로가기

 

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