https://school.programmers.co.kr/learn/courses/30/lessons/72410
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문자열이나 문자의 비교, 아스키코드를 알아야 쉽게 풀 수 있는 시뮬레이션 문제입니다.
입력된 문자열을 7단계를 거쳐 요구하는 조건에 맞는 문자열로 변형시켜야 하는데, 한 함수 안에서 동작해도 상관 없지만 구현시에 헷갈리지 않기 위해 7단계를 step 1~7로 쪼개어 각각 구현했습니다.
def solution(new_id):
id = step1(new_id)
id = step2(id)
id = step3(id)
id = step4(id)
id = step5(id)
id = step6(id)
id = step7(id)
answer = ""
for i in id:
answer += i
return answer
def step1(id):
result = []
for i in id:
character = ord(i)
if(65 <= character and character <= 90):
result.append(chr(character + 32))
else:
result.append(i)
return result
def step2(id):
result = []
for i in id:
character = ord(i)
if((97 <= character and character <= 122) or (48 <= character and character <= 57) or character == 45 or character == 46 or character == 95):
result.append(i)
return result
def step3(id):
result = []
before = ''
for i in id:
if(before == '.' and i == '.'):
continue
else :
result.append(i)
before = i
return result
def step4(id):
if(len(id) > 0 and id[0] == '.'):
id = id[1:]
if(len(id) > 0 and id[-1] == '.'):
id = id[0:-1]
return id
def step5(id):
if(len(id) == 0):
return ['a']
return id
def step6(id):
if(len(id) > 15):
id = id[0:15]
if(len(id) > 0 and id[-1] == '.'):
id = id[0:-1]
return id
def step7(id):
while(len(id) < 3):
id.append(id[-1])
return id
input = ["...!@BaT#*..y.abcdefghijklm","z-+.^.","=.=","123_.def","abcdefghijklmn.p"]
# input = ["...!@BaT#*..y.abcdefghijklm"]
for i in range(len(input)):
print(solution(input[i]))
728x90
'🔍 알고리즘 > 프로그래머스 Python' 카테고리의 다른 글
[Python] 프로그래머스 12977.소수만들기 (Lv.1) (0) | 2022.07.18 |
---|---|
[Python] 프로그래머스 81301.숫자문자열과영단어 (Lv.1) (0) | 2022.07.11 |
[Python] 프로그래머스 67256.키패드누르기 (Lv.1) (0) | 2022.07.11 |
[Python] 프로그래머스 64061.크레인인형뽑기게임 (Lv.1) (0) | 2022.07.11 |
[Python] 프로그래머스 60057.문자열압축 (Lv.2) (0) | 2022.06.04 |