프로그래머스 [3차] 압축 JAVA

sundays·2022년 9월 22일
0

문제

[3차] 압축

풀이

내 기준 구현문제 너무 어렵다 맨날 split 하고 charAt 으로 바꾸고 그걸또 배열로 바꾸고.. 나를 인덱스에 너무 가둬놓게만든다. 인덱스 outofbound 에 아주 혼쭐이나고 있다. 한번에 딱 알잘딱깔센 으로 인덱스 넣고 탈출조건 바로 나오고 그럼 정말 좋을거 같다 시나리오를 잘짜야 하는데 내가 정말 모자라다는 걸 너무 느낌TT 그래도 풀어서 이 새벽에 박수쳤음 (근데 1점)

  1. 알파벳 넣어주기
		ArrayList<String> arr = new ArrayList<>();
        for (int i = 1; i < 27; i++) {
            arr.add((char) (i + 64) + "");
        }

다른 분들 코드 보니 list.add 넣는데 어떤 분은 하드코딩으로 a-z까지 넣는 것도 봤다 놀랍다. 진심으로 근성있다고 생각한다.

  1. 탈출 조건
for (int i = 0; i < msg.length(); i++) {
	int j = i + 1;
	while (true) {
		if (j >= msg.length()) {
			answer.add(arr.indexOf(msg.substring(i, j)) + 1);
			i += j - i - 1;
			break;
		}
		String s = msg.substring(i, ++j);
		if (arr.indexOf(s) < 0) {
			answer.add(arr.indexOf(msg.substring(i, --j)) + 1);
			i += j - i - 1;
			arr.add(s);
			break;
		}
	}
}

지금 계속 보다보니까 너무 아쉬운 점이 많다. i,j 많이 쓰는거 좋아하지도 않는데 특히나 i += j - i - 1; 이 연산이 너무 꼴보기 싫다. if 조건문도 더 좋은게 있을 거 같다고 생각한다 시간이 되면 바꾸고싶다. 큐를 사용하려고 했는데 앞에서 여러번 poll() 해서 다시 넣기에는 자료구조가 적당하지 않으니 덱을 사용하면 좀더 예쁘게 나올거 같다는 생각이 든다. 풀 문제가 너무 많아서 아직은 수정할 시간이 없다.

전체 코드

전체 코드

profile
develop life

0개의 댓글