오늘은 오전에 튜터님께서 파이썬 보충 라이브 섹션을 잠깐 하셔서 수업을 듣고 시작을 했다.
듣으면서 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 ~ 까지 확인하는 방법
시간 복잡도
1. O(N)
2. O(N)
3. O()
그리고 SQL 코드카타를 풀었는데 오랜만에 풀었더니 역시나 전체 데이터 및 중복값 확인과 문제를 제대로 읽지 않는 문제가 다시 발못을 잡았다.
내일은 SQL를 통해서 전체 데이터를 중복값을 찾는 쉬운 방법을 찾아봐야 할 것같다.
그리고 ADsP 시험이 바로 코앞으로 다가와서 집중해서 마무리를 잘 해야할 것같다.