99클럽 코테 스터디 9일차 TIL + 해시

2024. 11. 5. 16:28카테고리 없음

1. 알고리즘! 생각해보자

1) 중복을 제거하기 위해 set을 사용
2) 입력받은 단어를 StringBuilder(word).reverse().toString() 으로 확인
3) length와 가운데 글자를 출력

2. 해결 코드

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine()); // 단어의 수를 입력 받음

        Set<String> set = new HashSet<>(); // 중복을 제거하기 위해 Set을 사용

        for (int i = 0; i < n; i++) {
            String s = br.readLine(); // 단어를 입력 받음

            set.add(s); // 입력 받은 단어를 Set에 추가

            StringBuilder sb = new StringBuilder(s);
            String reverse = sb.reverse().toString(); // 입력 받은 단어를 뒤집어서 새로운 문자열 만듬

            if (set.contains(reverse)) { // 뒤집은 문자열이 Set에 있는지 확인하여 비밀번호인지 검사
                System.out.println(reverse.length() + " " + reverse.charAt(reverse.length() / 2));
                // 비밀번호의 길이와 가운데 글자를 출력
                break; // 비밀번호를 찾았으므로 반복문을 종료
            }
        }
    }
}

3. 레퍼런스

 

[백준] 9933번 : 민균이의 비밀번호 – JAVA [자바]

https://www.acmicpc.net/problem/9933 9933번: 민균이의 비밀번호 첫째 줄에 단어의 수 N (2 ≤ N ≤ 100)이 주어진다. 다음 N개 줄에는 파일에 적혀있는 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 소문자

propercoding.tistory.com