programmers.co.kr/learn/courses/30/lessons/42840
문제를 보고 쉽게 생각했다가 길어진 코드에 낭패를 봤다.
수포자들의 답안지의 패턴을 알아내고 그 패턴의 길이가
답안지의 답의 길이보다 짧으면 답안지길이 % 패턴길이의 인덱싱해주는 방식을 사용했다.
def Score(making_string, test):
score=0
for i in range(len(test)):
# print('i, test[i]',i,test[i])
if i > len(making_string)-1:
# print('길이',len(making_string)-1)
if test[i] == making_string[(i%(len(making_string)))]:
# print('A',int(making_string[i%((len(making_string)))]))
score += 1
else:
if test[i] == int(making_string[i]):
score += 1
return score
def solution(test):
# A = '12345'
# B = '21232425'
# C = '3311224455'
A = [1,2,3,4,5]
B = [2,1,2,3,2,4,2,5]
C = [3,3,1,1,2,2,4,4,5,5]
students = [Score(A,test),Score(B,test),Score(C,test)]
return [i for i in [1,2,3] if max([Score(A,test),Score(B,test),Score(C,test)])== students[i-1]]
처음 사용했을 땐 문자열로 사용을 했는데 문자열은 연산이 느리다는 것을 눈으로 보고 싶어 한 번 확인해 봤다.
- 다른사람의 풀이를 보고 패턴의 반복을 cycle로 해결하고, 넘파일의 count_nonzero를 사용하시분이 있었다.
2021.05.11 - [분류 전체보기] - [Python]0이 아닌값을 가져올 땐 nonzero
- 문자열보다 리스트가 더 빠른 속도를 보였다. 연산이 많은 문제에서는 더 많은 차이가 났다.
문자열을 변환할 수 있다면 변환하는 것을 우선으로 두자라는 생각이 들었다.
[coding_test]멀쩡한 사각형 (0) | 2021.05.12 |
---|---|
[coding_test]체육복 (0) | 2021.05.11 |
[coding_test] 5/8일 카카오 인턴쉽 코딩테스트 (0) | 2021.05.10 |
[coding_test]내적 (0) | 2021.05.10 |
[coding_test]폰켓몬 (0) | 2021.05.08 |