일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 큐
- django
- string
- 문자열
- Dynamic Programming
- DP
- binary search
- programmers
- BFS
- 완전탐색
- 그래프
- graph
- Brute Force
- 동적계획법
- sort
- 정렬
- 백준
- 알고리즘
- 코딩테스트
- heap
- Greedy
- 카카오 기출
- Code Refactoring
- Queue
- 힙
- DFS
- Algorithm
- DVWA
- 프로그래머스
- 탐욕법
Archives
- Today
- Total
생각과 고민이 담긴 코드
프로그래머스 - 신규 아이디 추천 (2021 KAKAO 블라인드 채용) / Level 1 본문
문제 : https://programmers.co.kr/learn/courses/30/lessons/72410
코딩테스트 연습 - 신규 아이디 추천
카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로
programmers.co.kr
풀이
def solution(new_id):
target = "0123456789abcdefghijklmnopqrstuvwxyz-_."
new_id = list(new_id)
i = 0
j = 0
dot_cnt = 0
while i < len(new_id): # 1, 2단계
new_id[i] = new_id[i].lower()
if new_id[i] not in target:
new_id.remove(new_id[i])
i -= 1
i += 1
while j < len(new_id): # 3단계
if new_id[j] == '.':
dot_cnt += 1
if dot_cnt > 1:
new_id.pop(j)
else:
j += 1
else:
dot_cnt = 0
j += 1
if len(new_id) != 0 and new_id[0] == '.': # 4단계
new_id.pop(0)
if len(new_id) != 0 and new_id[-1] == '.':
new_id.pop(-1)
if not new_id: # 5단계
new_id.append('a')
if len(new_id) >= 16: # 6단계
new_id = new_id[:15]
if len(new_id) != 0 and new_id[-1] == '.':
new_id.pop(-1)
if len(new_id) <= 2: # 7단계
while len(new_id) < 3:
new_id.append(new_id[-1])
return "".join(new_id)
각 단계마다 시키는 대로 구현하면 쉬운 문제이다.
다른 사람들의 풀이도 공부해봤는데
정규식을 이용해 구현한 사람도 있었으며
2단계에서 isalpha() 과 isdigit()를 이용하여 더 쉽게 구현한 풀이도 있었다.
이런 쉬운 문제를 풀 때 제일 중요한 건 막힘 없이 빠르게 풀고 넘어가는 것이다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 키패드 누르기 ( 2020 카카오 인턴십) / Level 1 (0) | 2022.01.03 |
---|---|
프로그래머스 - 거리두기 확인하기 (2021 카카오 채용연계 인턴십) / Level 2 (0) | 2022.01.03 |
프로그래머스 - 숫자 문자열과 영단어 (2021 카카오 채용연계 인턴십) / Level 1 (0) | 2021.12.05 |
프로그래머스 - 로또의 최고 순위와 최저 순위 (2021 Dev-Matching 웹백엔드) / Level 1 (0) | 2021.12.04 |
프로그래머스 - 기지국 설치 (Summer / Winter Coding ~ 2018) / Level 3 (0) | 2021.11.19 |