본문 바로가기

자바 Java/프로그래머스

[프로그래머스] 신규 아이디 추천

728x90

프로그래머스 '신규 아이디 추천' 풀이

 

문제 ) 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다.

 

나의 풀이 ) 각 사진 아래 더보기란에 추가 설명

더보기

1. toLowerCase() 함수를 이용해 입력받은 new_id의 모든 대문자를 소문자로 치환합니다.

더보기

2. charAt()함수로 꺼낸 new_id의 해당 인덱스 문자 값을 for문과 if문으로 판단해줍니다.

   new_id의알파벳 소문자와 숫자 그리고 사용 가능한 특수문자라면 answer에 해당 값을 그대로 넣어줍니다.

   만약, 사용 불가능한 특수문자라면 해당 순서의 answer값에 ""만을 더하고 사용 불가능한 값은 지나갑니다.

더보기

3. 3단계를 통과한 문자를 넣어주기 위해 answer2라는 문자열 변수를 만들어줍니다.

   먼저 answer2에 answer의 첫번째 문자를 넣어줍니다.

   그리고 for문을 이용하여 두번째 문자부터 마지막 문자까지 순회하며,

   1) 해당 인덱스 값이 . 인 값에만 한해서 (

.

가 연속인지 판단해주기 위해)

     해당 인덱스 값이 전 인덱스 값과 같다면 answer2에 해당 문자를 추가하지 않고 지나가게 합니다.

     해당 인덱스 값이 전과 다르다면 해당 인덱스 값을 answer2에 추가해줍니다.

   2) 만약 해당 인덱스 값이 . 이 아닌 다른 값이라면 , 그대로 answer2에 추가해줍니다.

-> 위 과정의 결과로 3단계 조건을 만족하는 문자들만이 담긴 answer2가 남게 됩니다.

더보기

3단계 방식과 비슷

4. 4단계를 통과한 문자를 넣어주기 위해 answer3라는 문자열 변수를 만들어줍니다.

   만약 3단계를 통과한 결과인 answer2의 첫 번째 인덱스 값이 . 이라면, answer3에 ""만을 넣어줍니다.

   첫 번째 인덱스와 마지막 인덱스를 제외한 인덱스 값들은 그대로 answer3에 순서대로 넣어줍니다.

   만약 answer2의 마지막 인덱스 값이  . 이라면, answer3에 ""만을 넣어줍니다.

-> 위 과정의 결과로 3단계 조건을 만족하는 문자들만이 담긴 answer3가 남게 됩니다.

더보기

5. 만약 answer3가 빈 문자열이라면, answer3에 "a" 문자를 넣어줍니다.

   equals() 함수를 이용하여 빈 문자열임을 확인할 수 있습니다.

6. 만약 answer3가 16자 이상이라면, answer3을 0번째 인덱스부터 14번째 인덱스까지 잘라줍니다.

   substring() 함수를 이용하여 문자열을 원하는 인덱스부터 원하는 인덱스까지 잘라줄 수 있습니다.

6.5. 만약 위의 실행이 끝난 뒤 answer3의 마지막 인덱스가 . 라면 이를 제거해줍니다.

      if문과 endsWith() 함수를 이용하여 . 로 끝나는지 확인하고 이것이 맞다면 아까처럼 substring() 함수를 이용해 마지막 인덱스 전까지 잘라줍니다.

더보기

7. answer3의 길이가 2 이하일 때 마지막 문자를 길이가 3이 될 때까지 반복해야 한다면, if문을 이용하여 answer3의 길이가 1개일 때와 2개일 때로 나눠서 실행할 수 있습니다. (5번째 단계를 거쳤기 때문에 answer3의 길이가 0개일 수는 없습니다.)

   길이가 2일 때는 마지막 문자를 1번 넣어주고, 길이가 1일 때는 마지막 문자를 2번 넣어줍니다.

-> 이로써 모든 단계를 다 거친 answer3가 나오게 되고, 이를 return 해주면 됩니다.

수정할 부분이 발견되거나 궁금한 점이 있으면 댓글 남겨주세요.

성장을 위한 댓글은 환영입니다 :)

728x90