[프로그래머스/문자열] 17677 [1차] 뉴스 클러스터링 - JAVA

2023. 9. 18. 23:41· Problem Solving/CT-Java
목차
  1. 문제
  2. 풀이

문제

https://school.programmers.co.kr/learn/courses/30/lessons/17677

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이

문제는 단순한데 자바 문자열에 익숙하지 않아 꽤 헤멘 문제이다. 

처음에는 정규식을 이용해서 해당 문자가 영문인지 판단하였는데 나중에 찾아보니 Character.isLetter() 로 간단하게 판별할 수 있는 것을 알게되었다. 

 

import java.util.*;
import java.io.*;

class Solution {
    public int solution(String str1, String str2) {
        int answer = 0;
        str1 = str1.toLowerCase();
        str2 = str2.toLowerCase();
        
        List<String> st1 = new ArrayList<>();
        List<String> st2 = new ArrayList<>();
        
        // str1
        for(int i = 0; i < str1.length()-1; i++) {
            String tar = str1.substring(i, i+2);
            // 확인
            if(!String.valueOf(tar.charAt(0)).matches("^[a-zA-Z]*$")) {
                continue;
            } 
            
            if(!String.valueOf(tar.charAt(1)).matches("^[a-zA-Z]*$")) {
                continue;
            } 
            
            st1.add(tar);
        }
        
        // str2
        for(int i = 0; i < str2.length()-1; i++) {
            String tar = str2.substring(i, i+2);
            // 확인
            if(!String.valueOf(tar.charAt(0)).matches("^[a-zA-Z]*$")) {
                continue;
            } 
            
            if(!String.valueOf(tar.charAt(1)).matches("^[a-zA-Z]*$")) {
                continue;
            } 
            
            st2.add(tar);
        }
        
        Collections.sort(st1);
        Collections.sort(st2);
        
        List<String> union = new ArrayList<>();
        List<String> inter = new ArrayList<>();
        
        for(String str : st1) {
            if(st2.remove(str)) {
                inter.add(str);
            }
            union.add(str);
        }
        
        for(String str : st2) {
            union.add(str);
        }
        
        if(union.size() == 0){
            return 65536;
        }
        
        if(inter.size() == 0) {
            return 0;
        } 
        
        double temp = (double) inter.size()/ (double) union.size();
        return (int) (temp * 65536);
    }
}

'Problem Solving > CT-Java' 카테고리의 다른 글

[백준/그리디] 2457 공주님의 정원 - 자바  (0) 2024.02.03
[백준/DP] 2616 소형기관차 - 자바  (0) 2024.02.03
[프로그래머스/구현] 77485 행렬 테투리 회전하기 - JAVA  (0) 2023.09.16
[프로그래머스/문자열] 60065 튜플 - JAVA  (0) 2023.09.16
[프로그래머스/문자열] 60057 문자열압축 - JAVA  (0) 2023.09.16
  1. 문제
  2. 풀이
'Problem Solving/CT-Java' 카테고리의 다른 글
  • [백준/그리디] 2457 공주님의 정원 - 자바
  • [백준/DP] 2616 소형기관차 - 자바
  • [프로그래머스/구현] 77485 행렬 테투리 회전하기 - JAVA
  • [프로그래머스/문자열] 60065 튜플 - JAVA
White Han
White Han
Software Developer
sudo apt-get happinessSoftware Developer
White Han
sudo apt-get happiness
White Han
전체
오늘
어제
  • 분류 전체보기 (183)
    • Language (35)
      • Java (17)
      • Java-Weekly-study (0)
      • Python (18)
    • BackEnd (11)
      • Server (2)
      • Spring (3)
      • Spring Security (0)
      • JDBC (1)
      • NodeJS (2)
      • LINUX (3)
    • DataBase (10)
      • MySQL (5)
      • MongoDB (4)
      • Oracle (1)
    • Infra (4)
      • Docker (4)
    • CS (38)
      • OS (38)
    • Problem Solving (79)
      • Algorithm (8)
      • CT-Java (30)
      • CT-Python (41)
    • IDE (1)
      • eclipse (1)
      • vscode (0)
    • Etc. (3)
      • Git (1)
      • TDD, Refactor, CleanCode (1)
      • Conference (1)
    • 기록 (2)
      • 후기 (1)
      • 프로젝트 회고록 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

공지사항

  • 방문해 주셔서 감사합니다.

인기 글

태그

  • javascript
  • 운영체제 구조
  • javascript identifier
  • 자바스크립트
  • Java Inheritance
  • 프로세서
  • 24인치 모니터 추천
  • 프로세스
  • java
  • 사무용 모니터
  • 싸피8기
  • 자바스크립트 개념
  • 알파스캔 모니터
  • 자바 super
  • 운영체제
  • 자바 this
  • 싸피
  • OS
  • 자바스크립스 식별자 종류
  • Java this
  • 운영체제 역할
  • AOC 24B1X
  • 싸피 합격
  • 싸피 후기
  • 사무용 모니터 추천
  • SSAFY
  • 자바스크립트 식별자
  • 자바 inheritance
  • Java super
  • 알파스캔 AOC 24B1X

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
White Han
[프로그래머스/문자열] 17677 [1차] 뉴스 클러스터링 - JAVA
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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