[LeetCode] Strong Password Checker II

아르당·2026년 8월 26일

LeetCode

목록 보기
489/561
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

다음 조건을 모두 충족하면 강력한 비밀번호라고 말한다.

  • 최소 8자리 이상이다.
  • 최소 하나는 영어 소문자이다.
  • 최소 하나는 영어 대문자이다.
  • 최소 하나는 숫자이다.
  • 최소 하나는 특수문자이다. 특수문자는 문자열 "!@#$%^&*()-+"에 있는 문자이다.
  • 인접한 위치에 같은 문자 2개를 포함하지 않는다.

문자열 password가 주어졌을 때, 강력한 비밀번호면 true를 반환해라. 그렇지 않다면 false를 반환해라.

Example

#1
Input: password = "IloveLe3tcode!"
Output: true
Explanation: 비밀번호가 모든 조건을 충족한다. true를 반환한다.

#2
Input: password = "Me+You--IsMyDream"
Output: false
Explanation: 비밀번호가 숫자를 포함하지 않고 인접한 위치에 같은 문자 2개를 포함한다. 그래서 false를 반환한다.

#3
Input: password = "1aB!"
Output: false
Explanation: 비밀번호가 조건을 충족하지 않는다. 그래서 false를 반환한다.

Constraints

  • 1 <= password.length <= 100
  • password는 문자, 숫자, 특수문자:"!@#$%^&*()-+"로 구성된다.

Solved

class Solution {
    public boolean strongPasswordCheckerII(String password) {
        int n = password.length();

        if(n < 8){
            return false;
        }

        boolean isLow = false;
        boolean isUp = false;
        boolean isDigit = false;
        boolean isSpec = false;

        for(int i = 0; i < n; i++){
            char c = password.charAt(i);

            if(i != n - 1 && c == password.charAt(i + 1)){
                return false;
            }else if(c >= 'a' && c <= 'z'){
                isLow = true;
            }else if(c >= 'A' && c <= 'Z'){
                isUp = true;
            }else if(c >= '0' && c <= '9'){
                isDigit = true;
            }else if("!@#$%^&*()-+".indexOf(c) != -1){
                isSpec = true;
            }
        }

        return isLow && isUp && isDigit && isSpec;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글