프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
def solution(msg):
answer = []
d = dict()
for i in range(1, 27):
d[chr(i+64)] = i
idx = 27
ptr = 0
while True:
cnt = 1
while ptr < len(msg):
if msg[ptr:ptr+cnt] in d:
if ptr + cnt == len(msg):
answer.append(d[msg[ptr:ptr+cnt]])
return answer
else:
cnt += 1
else:
answer.append(d[msg[ptr:ptr+cnt-1]])
# print("사전 추가 ", idx, " : ", msg[ptr:ptr+cnt])
d[msg[ptr:ptr+cnt]] = idx
idx += 1
ptr = ptr + cnt-1
break
chr 함수는 정수를 인자로 받아서 해당하는 유니코드 문자를 반환해준다. 이를 이용하여 처음에 사전(d)을 초기화해준다.
현재 solution의 입력으로 받은 문자열에서 보고 있는 부분문자열의 시작 위치를 표시하기 위해 ptr 변수를 이용한다.
cnt는 문자열의 길이라고 생각하면 된다. 먼저 길이가 1인 문자열이 사전에 있는지 학인하고 사전에 있다면 cnt를 증가시켜 길이가 1 더 긴 부분문자열도 사전에 있는지 확인한다. 이 과정을 부분문자열이 사전에 없을 때까지 반복하여 사전에 없는 문자열이 나온다면 사전에 등록해준다. 이때 확인하는 부분 문자열이 사전에 있는데 이게 마지막으로 남은 문자열이라면 사전에서 인덱스를 answer 배열에 추가해주고 answer을 리턴해준다.
'문제풀이 > 기타' 카테고리의 다른 글
[Python/파이썬] 2018 KAKAO BLIND RECRUITMENT [1차] 프렌즈4블록 (0) | 2022.12.20 |
---|---|
[Python/파이썬] 2019 KAKAO BLIND RECRUITMENT 오픈채팅방 (0) | 2022.12.17 |
[Python/파이썬] 프로그래머스 n^2 배열 자르기 (1) | 2022.12.09 |
[Python/파이썬] 프로그래머스 더 맵게 (0) | 2022.12.08 |
[Python/파이썬] 프로그래머스 주식가격 (1) | 2022.12.07 |
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
def solution(msg): answer = [] d = dict() for i in range(1, 27): d[chr(i+64)] = i idx = 27 ptr = 0 while True: cnt = 1 while ptr < len(msg): if msg[ptr:ptr+cnt] in d: if ptr + cnt == len(msg): answer.append(d[msg[ptr:ptr+cnt]]) return answer else: cnt += 1 else: answer.append(d[msg[ptr:ptr+cnt-1]]) # print("사전 추가 ", idx, " : ", msg[ptr:ptr+cnt]) d[msg[ptr:ptr+cnt]] = idx idx += 1 ptr = ptr + cnt-1 break
chr 함수는 정수를 인자로 받아서 해당하는 유니코드 문자를 반환해준다. 이를 이용하여 처음에 사전(d)을 초기화해준다.
현재 solution의 입력으로 받은 문자열에서 보고 있는 부분문자열의 시작 위치를 표시하기 위해 ptr 변수를 이용한다.
cnt는 문자열의 길이라고 생각하면 된다. 먼저 길이가 1인 문자열이 사전에 있는지 학인하고 사전에 있다면 cnt를 증가시켜 길이가 1 더 긴 부분문자열도 사전에 있는지 확인한다. 이 과정을 부분문자열이 사전에 없을 때까지 반복하여 사전에 없는 문자열이 나온다면 사전에 등록해준다. 이때 확인하는 부분 문자열이 사전에 있는데 이게 마지막으로 남은 문자열이라면 사전에서 인덱스를 answer 배열에 추가해주고 answer을 리턴해준다.
'문제풀이 > 기타' 카테고리의 다른 글
[Python/파이썬] 2018 KAKAO BLIND RECRUITMENT [1차] 프렌즈4블록 (0) | 2022.12.20 |
---|---|
[Python/파이썬] 2019 KAKAO BLIND RECRUITMENT 오픈채팅방 (0) | 2022.12.17 |
[Python/파이썬] 프로그래머스 n^2 배열 자르기 (1) | 2022.12.09 |
[Python/파이썬] 프로그래머스 더 맵게 (0) | 2022.12.08 |
[Python/파이썬] 프로그래머스 주식가격 (1) | 2022.12.07 |