Computer Science/자료구조

[6.12] 프로그래머스 코딩테스트 연습 - 신규 아이디 추천 (16/100)

토마토. 2021. 6. 11. 21:23

코딩테스트 연습 - 신규 아이디 추천 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - 신규 아이디 추천

카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로

programmers.co.kr

어렵다
int variable is not iterable 오류가 뜨는데 왜 이러는거지?

def solution(new_id): answer = '' new_id = new_id.lower() if len(new_id) == 0: new_id == 'a' elif len(new_id) >= 16: new_id = new_id[0:16] for i in range(1, len(new_id)-1): if new_id[i].isalpha() or new_id[i].isdigit() or new_id[i] in ['-','_','.']: new_id = new_id[0:i] + new_id[i+1:] while True: if new_id.count('..') != 0: loca = new_id.find('..') #이게 8 8을 빼면 됨 new_id = new_id[:loca] + new_id[loca+1:] if new_id[0] == '.': new_id = new_id[1:] if new_id[-1] == '.': new_id = new_id[:-1] else: break if len(new_id) <= 2: new_id += str(new_id[-1]) * (3-len(new_id)) answer = new_id return answer new_id = "...!@BaT#*..y.abcdefghijklm" print(solution(new_id))

다시 처음부터 해보자!

def solution(new_id): new_id.lower() for i in range(len(new_id)): if new_id[i].isalpha(): pass elif new_id[i].isdigit(): pass elif new_id[i] in ['-', '_', '.']: pass else: #new = new_id[:i] + new_id[i+1:] new_id = new return new_id # 내가 입력한 곳에서 문자가 없으면 에러가 난다 #알파벳 소문자, 숫자, -, _, . 만 살리고 나머지 제거 # '...', '..' 등 -> .으로 치환 #.처음 /끝 -> 제거 # 빈 문자열 -> a 대입 # .가 끝에 위치하면, . 제거 # 16자 이상 -> 15개만 살리기 # 2자 이하 -> 마지막 문자 추가 new_id = 'abcde*$%..' for i in range(len(new_id)): if new_id[i].isalpha(): pass elif new_id[i].isdigit(): pass elif new_id[i] in ['-', '_', '.']: new = new_id[:i] + new_id[i+1:] print(new)

그래도.. 80점 만들었다.

def solution(new_id):
    answer = ''
    new_id = new_id.lower()
    new_id = list(new_id)
    i = 0
    try:
      while True:
        if i >= len(new_id):
          break
        if new_id[i].isalnum() == True or new_id[i] in ['-', '_', '.']:
          i += 1
          continue
        else:
          del new_id[i]
      j = 0
      while True:
        if j >= len(new_id)-2:
          break
        if new_id[j] == new_id[j+1] =='.':
          del new_id[j]
        else:
          j += 1
          continue
      if new_id[0] == '.':
        del new_id[0]
      if new_id[-1] == '.': #여기서 문제가 생겼다. 
        del new_id[-1]
      if new_id[0] == '.':
        del new_id[0]
      if new_id[-1] == '.':
        del new_id[-1]
      elif len(new_id) >= 16:
        new_id = new_id[:15]
        if new_id[-1] == '.':
          del new_id[-1]
    except:
      if len(new_id) == 0:
        new_id.append('a')

    if len(new_id) <= 2:
      for i in range(3 - len(new_id)):
        new_id.append(new_id[-1])
    answer = ''.join(new_id)
    return answer