코딩문제풀이/파이썬

[프로그래머스] 신규 아이디 추천(파이썬)

오늘밤공부 2023. 3. 25. 10:00
반응형

🗓️ 문제 설명

  • 유저들이 규칙에 맞지 않은 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하고 있습니다.
  • 아이디의 규칙은 다음과 같습니다.
    • 아이디의 길이는 3자 이상 15자 이하여야 합니다.
    • 아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)만 사용할 수 있습니다.
    • 단, 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다.
  • 7단계의 순차적인 처리 과정을 통해 신규 유저가 입력한 아이디가 아이디 규칙에 맞는지 검사하고 규칙에 어긋난다면 새로운 아이디를 추천해주려고 합니다.
    1. new_id의 모든 대분를 대응되는 소문자로 치환합니다.
    2. new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다.
    3. new_id에서 마침표(.)가 2번 이상 연속된 부분은 하나의 마침표(.)로 치환합니다.
    4. new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다.
    5. new_id가 빈 문자열이라면, new_id에 'a'를 대입합니다.
    6. new_id의 길이가 16자 이상이면 첫 15개의 문자를 제외한 나머지 문자를 모두 제거합니다.
      만약 제거 후 마침포(.)가 new_id의 끝에 위치한다면 끝에 위치한 마침표(.)문자를 제거합니다.
    7. new_id의 길이가 2자 이하라면, new_id의 마지막 문자를 new_id의 길이가 3이 될 때까지 반복해서 끝에 붙입니다.
  • 신규 유저가 입력한 아이디를 나타내는 new_id가 매개변수로 주어질 때, 위 7단계의 처리 과정을 거친 후의 추천 아이디를 반환하세요.
  • 제한 사항
    • new_id는 길이 1이상 1,000이하인 문자열
    • new_id는 알파벳 대문자, 알파벳 소문자, 숫자, 특수문자로 구성
    • new_id에 나타날 수 있는 특수문자는 "-_.~!@#$%^&*()=+[{]}:?,<>/"로 한정됩니다.
  • 입출력 예시
new_id result
"...!@BaT#*..y.abcdefghijklm" "bat.y.abcdefghi"
"z-+.^." "z--"
"=.=" "aaa"
"123_.def" "123_.def"
"abcdefghijklmn.p" "abcdefghijklmn"

 

💻 코드

최종 코드

 

코드 풀이

 

다른 사람 풀이

더보기

풀이 1번

  1. 4번줄 : 주어진 문자열을 소문자로 변경
  2. 6~8번줄 : 문자열을 하나씩 꺼내면서 알파벳, 숫자, '-', '_', '.'만 answer에 붙힘
  3. 10~11번줄 : answer에 '.'가 연속해서 있으면 한개의 '.'로 변경
  4. 13~16번줄 : 문자열의 처음과 끝에 '.'가 있으면 제거
  5. 18~19번줄 : 문자열이 비어있으면 'a'를 추가
  6. 21~24번줄 : 문자열의 길이가 15이상이면 15번째 인덱스에서 잘라주고 마지막 값이 '.'라면 마지막 값을 제거
  7. 26~27번줄 : 문자열의 길이가 3 미만이라면 마지막 값을 부족한 길이만큼 추가해줌

풀이 2번

  1. 5번줄 : 주어진 문자열을 소문자로 변경
  2. 6번줄 : 문자열에서 소문자, 숫자, '-', '_', '.'를 제외한 문자는 제거
  3. 7번줄 : '.'가 연속으로 나오면 하나의 '.'로 대체
  4. 8번줄 : 처음과 마지막 자리에 '.'가 나온다면 제거
  5. 9번줄 : 문자열이 비어있다면 'a'를 아니라면 15번째 인덱스에서 자른 문자열을 저장
  6. 10번줄 : 8번줄과 동일(처음과 마지막 자리에 '.'가 나온다면 제거)
  7. 11번줄 : 문자열의 길이가 2이상이라면 있는 그대로 저장하고, 아니라면 부족한 길이만큼 마지막 문자열을 더해서 저장

 

 

알게된 점

더보기

string = string if 조건 else 조건

문자열은 위와 같은 형태가 가능하다는 사실!

반응형