공부하기/백준

[Java] 백준 풀기 9933 - 민균이의 비밀번호

XEV 2023. 9. 25. 23:32

자바 백준 9933번

브론즈 1

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

 

9933번: 민균이의 비밀번호

첫째 줄에 단어의 수 N (2 ≤ N ≤ 100)이 주어진다. 다음 N개 줄에는 파일에 적혀있는 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 소문자로만 이루어져 있으며, 길이는 2보다 크고 14보다 작은

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 구현, 자료 구조, 문자열, 해시를 사용한 집합과 맵

 

 

 

 

 

코드 보기

import java.util.Scanner;
import java.util.ArrayList;

public class Main {
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        // 단어의 수 입력
        int N = sc.nextInt();
        
        // 단어를 저장할 ArrayList 생성
        ArrayList<String> words = new ArrayList<>();
        
        // 단어 입력
        for (int i = 0; i < N; i++) {
            String word = sc.next();
            words.add(word);  // ArrayList에 추가
        }
        
        // 비밀번호 찾기 함수 호출
        String result = findPassword(words);
        
        // 결과 출력
        System.out.println(result);
    }
    
    // 비밀번호를 찾는 함수
    public static String findPassword(ArrayList<String> words) {
        int length = 0;  // 비밀번호의 길이
        char middleChar = ' ';  // 비밀번호의 가운데 글자
        
        // 각 단어에 대해 검사
        for (String password : words) {
            StringBuilder reversed = new StringBuilder(password).reverse();  // 단어를 뒤집음
            if (words.contains(reversed.toString())) {  // 뒤집은 단어가 목록에 있는지 확인
                length = password.length();  // 길이 저장
                middleChar = password.charAt(length / 2);  // 가운데 글자 저장
                break;  // 비밀번호를 찾았으므로 루프 종료
            }
        }
        
        // 결과 문자열 반환
        return length + " " + middleChar;
    }
}