[PCCE 기출문제] 8번 / 닉네임 규칙

이리·2024년 10월 22일
0
post-thumbnail

문제: https://school.programmers.co.kr/learn/courses/30/lessons/340200

문제설명

닉네임을 입력받는데 닉네임에는 조건이 있다.

  1. 닉네임의 길이가 4자 이상 8자 이하여야합니다.
  2. 닉네임에는 소문자 lw, 대문자 O와 W를 사용할 수 없습니다.
  3. 이외의 영어 대소문자와 숫자는 모두 사용이 가능합니다.

잘못된 닉네임이 들어온다면 다음 조건으로 바꾼다.

  1. 소문자 l을 대문자 I로 변경합니다.
  2. 소문자 w를 두 개의 소문자 v, 즉 vv로 변경합니다.
  3. 대문자 W를 두 개의 대문자 V, 즉 VV로 변경합니다.
  4. 대문자 O를 숫자 0으로 변경합니다.
  5. 수정된 닉네임의 길이가 4 미만일 경우 뒤에 소문자 o를 길이가 4가 될때까지 이어붙입니다.
  6. 수정된 닉네임의 길이가 8보다 클 경우 8번째 문자까지만 사용합니다.

기존코드

class Solution {
    public String solution(String nickname) {
        String answer = "";
        for(int i=0; i<nickname.length(); i++){
            if(nickname.charAt(i) == 'l'){
                answer += "I";
            }
            else if(nickname.charAt(i) == 'w'){
                answer += "vv";
            }
            else if(nickname.charAt(i) == 'W'){
                answer += "VV";
            }
            else if(nickname.charAt(i) == 'O'){
                answer += "0";
            }
            else{
                answer += nickname.charAt(i);
            }
        }
        if(answer.length() < 3){
            answer += "o";
        }
        if(answer.length() > 8){
            answer = answer.substring(0, 8);
        }
        return answer;
    }
}

풀이방법

조건대로 따라가보니 5. 수정된 닉네임의 길이가 4 미만일 경우 뒤에 소문자 o를 길이가 4가 될때까지 이어붙입니다. 조건을 만족시키지 못한다는 것을 확인했다.

if(answer.length() < 3){
            answer += "o";
        }

현재 코드는 새로 바뀐 닉네임이 3자리 미만일 경우 "o"를 하나만 붙이게 된다.

5번 조건을 만족시키기 위해서는 while로 4자리가 될때까지 "o"를 추가해야한다.

while(answer.length() < 4){
            answer += "o";
        }

이렇게 고쳤더니?! 됐다!!

post-custom-banner

0개의 댓글