은세고화
뚜렷한 기억보단 흐릿한 잉크를
은세고화
전체 방문자
오늘
어제
  • 분류 전체보기 (95)
    • TDD (2)
      • 학점 산출 프로그램 (2)
    • IT (43)
      • 부스트코스 (18)
      • CS50 (3)
      • 도서추천 알고리즘 (2)
      • 스터디 일정 (3)
      • 스프링 (3)
      • 프로젝트 개발 중 발생한 에러 (8)
      • 웹개발 (3)
      • DB (3)
    • 독서 후기 (12)
      • 도서 (12)
    • e북 (3)
    • 알고리즘 (26)
    • 프로젝트 (6)
      • 향수 (6)
    • 회고 (1)

블로그 메뉴

  • 홈

공지사항

인기 글

티스토리

hELLO · Designed By 정상우.
글쓰기 / 관리자
은세고화

뚜렷한 기억보단 흐릿한 잉크를

알고리즘

[JAVA 자바] 백준 2179

2023. 5. 25. 15:40
반응형

 

https://www.acmicpc.net/problem/2179

 

2179번: 비슷한 단어

첫째 줄에 S를, 둘째 줄에 T를 출력한다. 단, 이 두 단어는 서로 달라야 한다. 즉, 가장 비슷한 두 단어를 구할 때 같은 단어는 제외하는 것이다.

www.acmicpc.net

 

가장 먼저 떠오른 방법은 모든 문자의 모든 경우를 구하는 방법이다. 하지만 입력길이가 20000이기 때문에 N * N * 100으로 시간초과가 난다고 판단했다.

 

떠오른 방법은 문자를 1자리 2자리 3자리 ...N자리로 다 나누고 set에 넣어 비교하는 방식을 생각했다. S와 T를 저장해서 출력해야 하는데 이 방식은 접두사가 같은 문자를 찾아도 S를 찾을 수가 없었다.

 

결국은 Map에서 키로 자른문자 value로 원본문자를 넣어서 S와 T를 찾는 방식으로 풀었다. 제출하면서 매번 split을 하니 메모리초과를 걱정했는데 무사통과했다.

 

 

import java.io.*;
import java.util.*;
class Main {
    static int N;

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        N = Integer.parseInt(br.readLine());
        int cnt = 0;
        HashMap<String, String> map = new HashMap<>();
        String S = "";
        String T = "";
        for (int i = 0; i < N; i++) {
            String word = br.readLine();
            for (int j = 0; j < word.length(); j++) {
                String s = word.substring(0,j+1);
                if(map.containsKey(s)){
                    if(s.length() > cnt){
                        S = map.get(s);
                        T = word;
                        cnt = s.length();
                    }
                }else map.put(s,word);
            }
        }
        System.out.println(S);
        System.out.println(T);
    }
}

 

반응형
저작자표시 (새창열림)

'알고리즘' 카테고리의 다른 글

[JAVA 자바] 프로그래머스 PCCP 모의고사 3번 유전법칙  (0) 2023.06.09
[JAVA 자바] 프로그래머스 과제 진행하기  (2) 2023.06.09
[프로그래머스] 혼자 놀기의 달인 자바  (0) 2022.10.13
여행경로 자바  (0) 2022.09.06
백준 1003 피보나치 함수 자바  (1) 2022.03.22
    '알고리즘' 카테고리의 다른 글
    • [JAVA 자바] 프로그래머스 PCCP 모의고사 3번 유전법칙
    • [JAVA 자바] 프로그래머스 과제 진행하기
    • [프로그래머스] 혼자 놀기의 달인 자바
    • 여행경로 자바
    은세고화
    은세고화

    티스토리툴바