Programmers/Lv1

[프로그래머스] 신규 아이디 추천 (Lv1) / 2021 카카오 블라인드 채용

2023. 6. 16. 16:17

문제요약

나의 코드 및 설명

def solution(new_id):
    answer = ''
    
    #1단계
    new_id = new_id.lower() 
    new_id_list = list(map(str, str(new_id)))
    new_id = ''
    print("1단계:","".join(map(str,new_id_list)))
    
    #2단계
    for i in range(len(new_id_list)):
        if 97<=ord(new_id_list[i])<=122 or 48<=ord(new_id_list[i])<=57 \
        or new_id_list[i] in ["-", "_", "."]:
            new_id += new_id_list[i]
    print("2단계:",new_id)
    
    #3단계
    condot = ''
    for i in range(len(new_id), 1, -1):
        condot = '.' * i
        new_id = "".join(map(str, new_id.replace(condot,".")))
    print("3단계:",new_id)
    
    #4단계
    if new_id[0] == "." and new_id[-1] == ".":
        new_id = new_id[1:len(new_id)-1]
    elif new_id[0] == "." and new_id[-1] != ".":
        new_id = new_id[1:]
    elif new_id[0] != "." and new_id[-1] == ".":
        new_id = new_id[:len(new_id)-1]
    print("4단계:",new_id)
        
    #5단계
    if new_id == "":
        new_id = "a"
    print("5단계:",new_id)
        
    #6단계
    if len(new_id) >= 16:
        new_id = new_id[:15]
        if new_id[-1] == ".":
            new_id = new_id[:14]
    print("6단계:",new_id)
            
    #7단계
    if len(new_id) <= 2:
        x = new_id[-1]
        while True:
            new_id += x
            if len(new_id) == 3:
                break
    
    answer = new_id
    
    return answer

다른 코드 및 설명

  • 나는 주어진 문자열의 문자가 알파벳인지, 숫자인지 판단하기 위해 아스키코드를 활용했다. 하지만 이 분은 isalpha() 함수와, isdigit() 함수를 활용하였다. isalpha() 함수는 문자인지 확인하는 함수, isdigit() 함수는 숫자인지 확인하는 함수이다.
def solution(new_id):
    answer = ''
    # 1
    new_id = new_id.lower()
    # 2
    for c in new_id:
        if c.isalpha() or c.isdigit() or c in ['-', '_', '.']:
            answer += c
    # 3
    while '..' in answer:
        answer = answer.replace('..', '.')
    # 4
    if answer[0] == '.':
        answer = answer[1:] if len(answer) > 1 else '.'
    if answer[-1] == '.':
        answer = answer[:-1]
    # 5
    if answer == '':
        answer = 'a'
    # 6
    if len(answer) > 15:
        answer = answer[:15]
        if answer[-1] == '.':
            answer = answer[:-1]
    # 7
    while len(answer) < 3:
        answer += answer[-1]
    return answer

 

피드백

복잡할 줄 알았지만 생각보다 주어진 문제 조건들만 따라가면 되는 의외로 간단한 문제. 매 단계마다 print를 찍어서 출력값을 봐가면서 문제를 풀면 헷갈리지 않게 풀 수 있다는 것을 몸소 체험할 수 있었다.

'Programmers > Lv1' 카테고리의 다른 글

[프로그래머스] 문자열 내 마음대로 정렬하기 (Lv1)  (0) 2023.07.24
[프로그래머스] 개인정보 수집 유효기간 (Lv1) / 2023 카카오 블라인드 채용  (0) 2023.06.16
[프로그래머스] 신고 결과 받기 (Lv1) / 2022 카카오 블라인드 채용  (0) 2023.06.14
'Programmers/Lv1' 카테고리의 다른 글
  • [프로그래머스] 문자열 내 마음대로 정렬하기 (Lv1)
  • [프로그래머스] 개인정보 수집 유효기간 (Lv1) / 2023 카카오 블라인드 채용
  • [프로그래머스] 신고 결과 받기 (Lv1) / 2022 카카오 블라인드 채용
hellosonic
hellosonic
hellosonic
꾸준함
hellosonic
전체
오늘
어제
  • 분류 전체보기 (285)
    • SSAFY (4)
    • 프로그래머스 데브코스 (26)
    • Diary (1)
    • JavaScript (20)
    • ToyPJ (13)
      • Python-Django (13)
    • CS지식 (11)
      • 자료구조 (5)
      • 개발 상식 (2)
      • 네트워크 (4)
    • Baekjoon (141)
      • IM Level (57)
      • DFS와 BFS (21)
      • 백트래킹 (21)
      • DP (3)
      • 이분탐색 (4)
      • 구현 (14)
    • Programmers (13)
      • Lv1 (4)
      • Lv2 (9)
    • SWEA (SW Expert Academy) (52)
      • D1 (5)
      • D2 (7)
      • D3 (40)
    • 이코테 (4)
    • Grammar (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기
  • 관리자

공지사항

인기 글

태그

  • 백준 18870
  • SWEA
  • SWEA D2
  • 파이썬 2529
  • 백준 1157
  • SWEA 파이썬
  • 백준
  • 프론트엔드 데브코스
  • 구현
  • 백준 2999
  • 프로그래머스 데브코스
  • SWEA/D3
  • 자바스크립트 기본기
  • 국비지원교육
  • JS
  • SWEA D3
  • 프로그래머스
  • 코딩부트캠프
  • 파이썬 1946
  • 리액트 todolist
  • 자바스크립트
  • 이코테
  • 백준 5212
  • 파이썬 11478
  • 파이썬
  • 파이썬 1436
  • 파이썬 1269
  • 백준 14891
  • javascript ux
  • 그리디

최근 댓글

최근 글

hELLO · Designed By 정상우.
hellosonic
[프로그래머스] 신규 아이디 추천 (Lv1) / 2021 카카오 블라인드 채용
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.