문자열 유형(알고리즘, Python)

기린이·2021년 7월 16일
0

알고리즘🔑

목록 보기
17/17

문자열 유형

반복되는 패턴으로 특정 길이 채우기

원래 나의 접근

p = [1,2,3,4,5]
length = 9

m = length//len(p[s])
n = length%len(p[s])

if m > 0:
    lst = p[s]
    for _ in range(m-1):
        lst += p[s]

    # last_lst = [0 for _ in range(n)]
    # for i in range(n):
    #     last_lst[i] = p[s][i]

    last_lst = p[s][:n]

    all_lst = lst + last_lst
    # print(all_lst)
else:
    all_lst = [0 for _ in range(length)]
    for i in range(length):
        all_lst[i] = p[s][i]

몫 = 채워야하는 길이 // 패턴길이
나머지 = 채워야하는 길이 % 패턴길이

몫만큼 패턴 반복해서 더하기 + 나머지길이만큼 패턴 자르기
-> 최종 리스트 완성

내가 한 해결

m = length // len(p[s])
n = length % len(p[s])

if m > 0:
    all_lst = p[s] * m + p[s][:n]
else:
    all_lst = p[s][:length]

다른 사람 해결

def solution(answers):
    pattern1 = [1,2,3,4,5]
    pattern2 = [2,1,2,3,2,4,2,5]
    pattern3 = [3,3,1,1,2,2,4,4,5,5]
    score = [0, 0, 0]
    result = []

    for idx, answer in enumerate(answers):
        if answer == pattern1[idx%len(pattern1)]:
            score[0] += 1
        if answer == pattern2[idx%len(pattern2)]:
            score[1] += 1
        if answer == pattern3[idx%len(pattern3)]:
            score[2] += 1

    for idx, s in enumerate(score):
        if s == max(score):
            result.append(idx+1)

    return result
  • 1%5 = 1 몫=0, 나머지=1

  • answer의 인덱스 % 패턴길이 -> answer의 인덱스와 매칭되는 패턴의 인덱스

특정값이 여러개 있을 때 인덱스 값을 알아내기

result = []
for idx, val in enumerate(lst):
	if val==max(lst):
    	result.append(idx)
profile
중요한 것은 속력이 아니라 방향성

0개의 댓글