[99클럽 코테 스터디 9일차 TIL] 백준 9933 민균이의 비밀번호

말하는 감자·2024년 11월 5일
0
post-thumbnail

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

💙 JAVA 비기너

📌 오늘의 학습 키워드

  • 문자열

📌 공부한 내용

📍 오늘의 문제

📍 작성 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

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());
	    String[] wordArr = new String[N];
	    
	    for (int i=0; i<N; i++) {
	    	wordArr[i] = br.readLine();
	    }

	    br.close();
	    
	    String password = "";
	    for(String revWord : wordArr) {
	    	StringBuilder sb = new StringBuilder(revWord);
	    	String reverse = sb.reverse().toString();
	    	for(String word : wordArr) {
	    		if(word.equals(reverse)) {
	    			password = word;
                    break;
	    		}
	    	}
	    }
	    
	    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
	    
	    bw.write(password.length() + " " + password.charAt(password.length()/2));

	    bw.flush();
	    bw.close();
		
	}
}

📌 오늘의 회고

어려울려나?! 했으나 생각보다 쉬워서 한번에 통과한 문제였다.

던어 수를 에 저장하고 문자열 배열 wordArr에 단어를 입력받아 저장했다.

foreach문을 통해 wordArr를 하나씩 StringBuilder.reverse().toString()을 해주어서 문자열을 거꾸로 만들어서 reverse에 저장하고 다시 foreach문을 통해 다른 단어들과 동일한지 확인했다.
만약에 같다면 password에 해당 단어를 저장해주고 break;을 통해 for문 실행을 중지시켰다.

String password = "";
for(String revWord : wordArr) {
	StringBuilder sb = new StringBuilder(revWord);
	String reverse = sb.reverse().toString();
	for(String word : wordArr) {
		if(word.equals(reverse)) {
	    	password = word;
            break;
	   	}
	}
 }

처음에 break;을 안쓰고 제출했는데 이후 비교를 위해 코드를 추가하고 실행해보니 메모리와 실행 시간이 짧아지는 걸 알 수 있었다.

아래 - break; ❌ / 위 - break;

패스워드를 알았으니 마지막으로 패스워드의 길이인 password.length()와 가운데 글자인 password.charAt(password.length()/2)를 출력해줬다.

profile
나는 말하는 감자다

0개의 댓글