본문 바로가기
코딩/백준-자바

[자바] 백준 4659번: 비밀번호 발음하기

by 철없는민물장어 2023. 2. 22.
728x90
반응형

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

 

4659번: 비밀번호 발음하기

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

www.acmicpc.net

 

문제에서 말하는 조건대로 구현하면 된다.

 

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

public class P4659 {

	public static void main(String[] args) throws IOException {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String password;
		while (true) {
			password = br.readLine();
			if (password.equals("end"))
				break;
			int count_mo = 0;
			int count_ja = 0;
			char before = '.';
			boolean acceptable = true;

			if (!password.contains("a") && !password.contains("e") && !password.contains("i") && !password.contains("o")
					&& !password.contains("u")) {
				// 모음이 없음
				acceptable = false;
			} else {
				for (int i = 0; i < password.length(); i++) {
					// 한글자씩 순회
					char now = password.charAt(i);

					if (now == 'a' || now == 'e' || now == 'i' || now == 'o' || now == 'u') {
						// 모음임
						count_mo++;
						count_ja = 0;
					} else {
						count_mo = 0;
						count_ja++;
					}

					if (count_mo == 3 || count_ja == 3) {
						// 모음또는 자음이 3개 연속임
						acceptable = false;
						break;
					}

					if (now == before && now != 'e' && now != 'o') {
						// 이전 글자와 같은데 e나 o는 아님
						acceptable = false;
						break;
					}
					before = now;

				}

			}

			if (acceptable) {
				System.out.println("<" + password + "> is acceptable.");
			} else {
				System.out.println("<" + password + "> is not acceptable.");
			}
		}
	}

}

모음이나 자음이 3개연속인 것을 판별하는 것은

count_모음, count_자음 변수를 만들어놓고 비밀번호를 한 글자씩 보면서 카운트를 세면 쉽게 판별할 수 있다

 

728x90
반응형

댓글