ALGORITHM

백준 4659 비밀번호 발음하기 (Java)

공부하는_다온 2023. 3. 13. 22:10

1. 문제 링크

 

4659번: 비밀번호 발음하기

좋은 패스워드를 만드는것은 어려운 일이다. 대부분의 사용자들은 buddy처럼 발음하기 좋고 기억하기 쉬운 패스워드를 원하나, 이런 패스워드들은 보안의 문제가 발생한다. 어떤 사이트들은 xvtp

www.acmicpc.net

 

2. 문제 및 입출력예제

 

3. 문제 풀이

각 조건을 확인하는 과정을 거치면 된다.

조건문이 여러개가 나와서 정신 딱 차리고 하나씩 하면 된다.

코드를 보면 문제 흐름 그대로 가는 게 보인다.

 

4. 코드

import java.io.BufferedReader;
import java.io.IOException;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new java.io.InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		String pw = "";
		while (true) {
			boolean flag1 = false;
			boolean flag3 = true;
			int[] al = new int[26];
			pw = br.readLine();

			if (pw.equals("end")) {
				break;
			}
			sb.append("<" + pw + "> is ");
			int cnt1 = 0;
			int cnt2 = 0;
			for (int i = 0; i < pw.length(); i++) {
				al[(pw.charAt(i) - 97)]++;
				
				//연속 확인
				if (pw.charAt(i)=='a' ||pw.charAt(i)=='e'||pw.charAt(i)=='i'||pw.charAt(i)=='o'||pw.charAt(i)=='u') {
					cnt1++;
					if (cnt1 == 3) {
						sb.append("not ");
						flag3 = false;
						break;
					}
					cnt2 = 0;
				} 
				else {
					cnt2++;
					if (cnt2 == 3) {
						sb.append("not ");
						flag3 = false;
						break;
					}
					cnt1 = 0;
				}
			}
			
			if(flag3) {
				if (al[0] > 0 || al[4] > 0 || al[8] > 0 || al[14] > 0 || al[20] > 0) {
					flag1 = true;
				}
				else {
					sb.append("not ");
					flag1 = false;
				}
			}
			
			if (flag1) {
				int e = 0;
				int o = 0;
				for (int i = 1; i < pw.length(); i++) { 
					if(pw.charAt(i) == pw.charAt(i-1)) {
						if(pw.charAt(i) == 'e') {
							e++;
							if(e == 3) {
								sb.append("not ");
								break;
							}
						}
						else if(pw.charAt(i) == 'o') {
							o++;
							if(o == 3) {
								sb.append("not ");
								break;
							}
						}
						else {
							sb.append("not ");
							break;
						}
					}
					else {
						e = 0;
						o = 0;
					}
					
				}
			} 
			
			sb.append("acceptable.\n");
		}
		System.out.println(sb);
	}
}