5월 8일 TIL

이진우·2024년 5월 8일
0

TIL

목록 보기
11/32

오늘은 오전에 튜터님께서 파이썬 보충 라이브 섹션을 잠깐 하셔서 수업을 듣고 시작을 했다.
듣으면서 enumerate함수에 대해서 더 자세하게 알게 되었다.

그래서 바로 실습에 사용을 해보았는데

def solution(answers):    
    
    answer = []

    student1 = [1, 2, 3, 4, 5]
    student2 = [2, 1, 2, 3, 2, 4, 2, 5]
    student3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]

    answer_multiple1 = len(answers) // len(student1)
    answer_multiple2 = len(answers) // len(student2)
    answer_multiple3 = len(answers) // len(student3)

    answer_index1 = len(answers) % len(student1)
    answer_index2 = len(answers) % len(student2)
    answer_index3 = len(answers) % len(student3)

    student1_answer = student1 * answer_multiple1 + student1[:answer_index1]
    student2_answer = student2 * answer_multiple2 + student2[:answer_index2]
    student3_answer = student3 * answer_multiple3 + student3[:answer_index3]

    student1_score = 0
    student2_score = 0
    student3_score = 0

    index = 0

    for i in answers:
        if i == student1_answer[index]:
            student1_score += 1
        if i == student2_answer[index]:
            student2_score += 1
        if i == student3_answer[index]:
            student3_score += 1
        index += 1

    Max = max(student1_score, student2_score, student3_score)

    if student1_score == Max:
        answer.append(1)
    if student2_score == Max:
        answer.append(2)
    if student3_score == Max:
        answer.append(3)
        
    return answer

이 코드를

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

요로코롬 바꿔 줄 수 있다.

그리고 알고리즘 코드카타를 풀면서 소수(Prime-Numder)에 대해서 더 자세하게 알아보았다.

  • 소수 찾기

  • N이 소수인지 아닌지 확인하는 방법
    1. 2 ~ N까지 다 나눠서 확인
    2. 2 ~ N/2까지 확인하는 방법
    3. 2 ~ N\sqrt{N} 까지 확인하는 방법

  • 시간 복잡도
    1. O(N)
    2. O(N)
    3. O(N\sqrt{N})

그리고 SQL 코드카타를 풀었는데 오랜만에 풀었더니 역시나 전체 데이터 및 중복값 확인과 문제를 제대로 읽지 않는 문제가 다시 발못을 잡았다.

내일은 SQL를 통해서 전체 데이터를 중복값을 찾는 쉬운 방법을 찾아봐야 할 것같다.

그리고 ADsP 시험이 바로 코앞으로 다가와서 집중해서 마무리를 잘 해야할 것같다.

0개의 댓글