상세 컨텐츠

본문 제목

[coding_test]모의고사

coding/coding_test

by golduny_zoo 2021. 5. 11. 14:45

본문

728x90

programmers.co.kr/learn/courses/30/lessons/42840

 

코딩테스트 연습 - 모의고사

수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는

programmers.co.kr

문제를 보고 쉽게 생각했다가 길어진 코드에 낭패를 봤다.

수포자들의 답안지의 패턴을 알아내고 그 패턴의 길이가 

답안지의 답의 길이보다 짧으면 답안지길이 % 패턴길이의 인덱싱해주는 방식을 사용했다.

 

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 > coding_test' 카테고리의 다른 글

[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

관련글 더보기