프로그래머스 [1차] 뉴스 클러스터링 JAVA

sundays·2022년 9월 18일
0

문제

[1차] 뉴스 클러스터링

풀이

stream 함수를 연습해보고자 어떻게든 도입하고 싶었는데.. 생각보다 구현이 단순하게 안나와서 어쩔수 없이 for 문으로 중복제거를 했다

  1. 문자 배열 리스트 생성
		for (int i = 0; i < str.length() - 1; i++) {
            char a = str.charAt(i);
            char b = str.charAt(i + 1);
            if (Character.isLetter(a) && Character.isLetter(b)) {
                pair.add(a + "" + b);
            }
        }

배열은 2자쌍으로 만들어야 한다. 2개 이상의 원소가 집합이기 때문에 최소 단위인 문자 배열을 만들어 주어야 하는데, 특수문자와 숫자 공백을 모두 제거해야하기 때문에 isLetter 함수를 사용하였다.

  1. 합집합 교집합 리스트 생성 (중복 제거)
		for (String s : str1Pair) {
            if (str2Pair.remove(s)) {
                intersect.add(s);
            }
            union.add(s);
        }

        for (String s : str2Pair) {
            union.add(s);
        }

intersect 는 교집합에 해당하는 부분이므로 str1Pair 가 아닌 str2Pair로 for문을 돌려도 무방하다. 같은 값을 가진 함수를 제거 하는 방식으로 union 리스트에도 함께 더해줄 수 있다. 두번째 for문에서 제거하고 남은 쌍을 입력해준다

stream 함수 쓰신 분들 보니까 너무 눈에 안들어오고 반복적인 코드가 많아보여서 안 쓰는 게 나을 것 같았다.

전체 코드

전체 코드

profile
develop life

0개의 댓글