쵼쥬
쵼쥬의 개발공부 TIL
쵼쥬
전체 방문자
오늘
어제
  • 분류 전체보기 (276)
    • 코딩테스트 (192)
      • [알고리즘] 알고리즘 정리 (7)
      • [백준] 코딩테스트 연습 (126)
      • [프로그래머스] 코딩테스트 연습 (59)
    • Spring (71)
      • [인프런] 스프링 핵심 원리- 기본편 (9)
      • [인프런] 스프링 MVC 1 (6)
      • [인프런] 스프링 MVC 2 (4)
      • [인프런] 실전! 스프링 부트와 JPA 활용1 (7)
      • [인프런] 실전! 스프링 부트와 JPA 활용2 (5)
      • [인프런] 실전! 스프링 데이터 JPA (7)
      • [인프런] 실전! Querydsl (7)
      • JWT (5)
      • [인프런] Spring Cloud (17)
      • [인프런] Spring Batch (4)
    • Java (6)
      • [Java8] 모던인자바액션 (4)
      • [부스트코스] 웹 백엔드 (2)
      • [패스트캠퍼스] JAVA STREAM (0)
    • CS (6)
      • 디자인 패턴과 프로그래밍 패터다임 (2)
      • 네트워크 (4)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • 스프링
  • 코딩테스트
  • 누적합
  • spring
  • BFS
  • 구현
  • Spring Data JPA
  • 인프런
  • 타임리프
  • jpa
  • 위클리 챌린지
  • 백준
  • querydsl
  • 프로그래머스
  • 백분
  • 알고리즘
  • 비트마스킹
  • 자바
  • MVC
  • 부스트코스

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
쵼쥬
코딩테스트/[프로그래머스] 코딩테스트 연습

뉴스 클러스터링

뉴스 클러스터링
코딩테스트/[프로그래머스] 코딩테스트 연습

뉴스 클러스터링

2021. 10. 8. 23:14


풀이 방법

두 문자열을 2글자씩 나눠서 list에 넣어주었다.

넣을 때 영어로만 구성되어 있는지 확인해서 다른 문자가 포함되어 있으면 넣지 않았다. (matches가 떠오르지 않아 그냥 비교했다.)

그 후 list에 들어있는 원소들끼리 비교해서 동일하면 교집합 갯수를 늘려주었다.

비교할 두 집합이 모두 공집합일 경우엔 1이 되고 그렇지 않고 교집합이 0 일 땐 1이 되지 않는다는 것을 주의해야 한다.

 

내 코드

import java.util.*;

class Solution {
    public int solution(String str1, String str2) {
        int answer = 0;
    
        ArrayList<String> list1 = new ArrayList<>();
        ArrayList<String> list2 = new ArrayList<>();

        for(int i = 0; i < str1.length() - 1; i++){
            String s = str1.substring(i, i + 2);
            if(('A'<= s.charAt(0) && 'Z' >= s.charAt(0) || 'a'<= s.charAt(0) && 'z' >= s.charAt(0))&&('A'<= s.charAt(1) && 'Z' >= s.charAt(1) || 'a'<= s.charAt(1) && 'z' >= s.charAt(1)))
                list1.add(s.toLowerCase());
        }
        
        for(int i = 0; i < str2.length() - 1; i++){
            String s = str2.substring(i, i+2);
            if(('A'<= s.charAt(0) && 'Z' >= s.charAt(0) || 'a'<= s.charAt(0) && 'z' >= s.charAt(0))&&('A'<= s.charAt(1) && 'Z' >= s.charAt(1) || 'a'<= s.charAt(1) && 'z' >= s.charAt(1)))
                list2.add(s.toLowerCase());
        }
        
        
        boolean[] check = new boolean[list2.size()];
        
        int count = 0;
        
        for(int i = 0; i< list1.size() ;i++){
            for(int j = 0 ; j< list2.size(); j++){
                if(check[j])
                    continue;
                if(list1.get(i).equals(list2.get(j))){
                    check[j] = true;
                    count++;
                    break;
                }
            }
        }
        if(list1.size()== 0 && list2.size()==0)
            answer = 65536;
        else if(count==0){
            answer = 0;
        }
        else{
            answer = (int)(((double)count/(list1.size() + list2.size() - count)) * 65536);
        }
        
        return answer;
    }
}

'코딩테스트 > [프로그래머스] 코딩테스트 연습' 카테고리의 다른 글

아이템 줍기  (0) 2021.10.20
교점에 별 만들기  (0) 2021.10.17
단체 사진 찍기  (0) 2021.10.08
카카오프렌즈 컬러링북  (0) 2021.10.08
전력망을 둘로 나누기  (0) 2021.10.07
    '코딩테스트/[프로그래머스] 코딩테스트 연습' 카테고리의 다른 글
    • 아이템 줍기
    • 교점에 별 만들기
    • 단체 사진 찍기
    • 카카오프렌즈 컬러링북
    쵼쥬
    쵼쥬

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.