Good: 강의를 듣고 스스로 생각을 해보려고 한 점이다.
Bad: 알고리즘 실시간 강의에 집중하지 못한 점이다. 알고리즘 강의가 어려워서 스트레스받는 점.
▶ 유튜브나 드라마 볼 때 옆으로 넘겨보는 스타일이다. 핵심만 알고 싶기 때문이다. 영화를 볼 때 엔딩을 먼저 본다. 결말을 알면 과정이 이해가 잘 되기 때문이다. 알고리즘 실시간 강의를 들었다. 열심히 해주신 강사님께 감사하지만, 집중이 잘 되지 않았다. 그 이유는 알고리즘 웹 강의를 오후부터 보는 날이다. 아무것도 모른 상태에서 실시간 강의를 먼저 듣는 게 버거웠다. 또 핵심만 보고 싶은 성격에 늘어지는 강의에 잘 참여를 못하게 되었다. 웹 강의를 우선 듣고 실시간 강의 녹화본을 보려고 계획 중이다.
▶ 파이썬 문법 기초를 마무리하고 자료구조 알고리즘 강의를 시청하고 있다. 파이썬 문법과 프로그래밍하는 것이 비슷하여 재미있다. 새로운 정보를 얻을 수 있어 집중하면서 본다. 처음부터 잘할 수 없다. 이번 강의도 빠르게 보기 -> 다시 보기 -> 스스로 숙제하기이다.
▶ 1-10강 듣다가 공감된 부분이 있다. '문제를 풀 때 어떤 조건을 찾고 있는지 생각해라.'이다. 문제를 보면 "이건 max로 했던 거 쓰면 되겠다. 저건 count += 1로 쓰면 되겠다."라고 바로 생각이 난다. 많이 풀고 이용한 거는 생각이 난다. 이처럼 어려운 것도 기출문제처럼 많이 풀어보면 실력이 늘지 않을까 생각된다.
[파이썬 문법 기초]
* 2-2강 튜플, 집합 퀴즈
✍️ Q. A가 들은 수업 중, B가 듣지 않은 수업을 찾아보기(차집합 A-B)
▶ 틀린 코드)
student_a = ['물리2','국어','수학1','음악','화학1','화학2','체육']
student_b = ['물리1','수학1','미술','화학2','체육']
a_set = set(student_a)
b_Set = set(student_b)
print(student_a - student_b)
내용을 입력하세요.
▶ 옳은 코드)
student_a = ['물리2','국어','수학1','음악','화학1','화학2','체육']
student_b = ['물리1','수학1','미술','화학2','체육']
a_set = set(student_a)
b_Set = set(student_b)
print(a_set - b_Set)
[자료구조 알고리즘]
* 1-4강 알고리즘과 친해지기(1) 퀴즈
✍️ Q. 다음과 같이 숫자로 이루어진 배열이 있을 때, 이 배열 내에서 가장 큰 수를 반환하시오. (최댓값 찾기)
▶ 틀린 코드)
num = [3, 5, 6, 1, 2, 4]
max = 0
max < num
max = num
print(max)
▶ 옳은 코드)
A.
def find_max_num(array):
for num in array:
for compare_num in array:
if num < compare_num:
break
else:
return num
print("정답 = 6 / 현재 풀이 값 = ", find_max_num([3, 5, 6, 1, 2, 4]))
print("정답 = 6 / 현재 풀이 값 = ", find_max_num([6, 6, 6]))
print("정답 = 1888 / 현재 풀이 값 = ", find_max_num([6, 9, 2, 7, 1888]))
B.
def find_max_num(array):
max_num = array[0]
for num in array:
if num > max_num:
max_num = num
return max_num
print("정답 = 6 / 현재 풀이 값 = ", find_max_num([3, 5, 6, 1, 2, 4]))
print("정답 = 6 / 현재 풀이 값 = ", find_max_num([6, 6, 6]))
print("정답 = 1888 / 현재 풀이 값 = ", find_max_num([6, 9, 2, 7, 1888]))
11/8 화요일에 max로 계산한 기억이 있어서 해보았다.
A 와 B 둘 다 정답이다. 각자 맞는 스타일이 있다. 나는 처음에 B로 배워서 더 마음이 간다.
* 1-5강 알고리즘과 친해지기(2) 퀴즈
✍️ Q. 다음과 같은 문자열을 입력받았을 때, 어떤 알파벳이 가장 많이 포함되어 있는지 반환하시오. (최빈값 찾기)
▶ 옳은 코드)
A.
def find_max_occurred_alphabet(string):
alphabet_array = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s",
"t", "u", "v", "x", "y", "z"]
max_occurrence = 0
max_alphabet = alphabet_array[0]
for alphabet in alphabet_array:
occurrence = 0
for char in string:
if char == alphabet:
occurrence += 1
if occurrence > max_occurrence:
max_alphabet = alphabet
max_occurrence = occurrence
return max_alphabet
result = find_max_occurred_alphabet
print("정답 = a 현재 풀이 값 =", result("Hello my name is sparta"))
print("정답 = a 현재 풀이 값 =", result("Sparta coding club"))
print("정답 = s 현재 풀이 값 =", result("best of best sparta"))
B.
def find_max_occurred_alphabet(string):
alphabet_occurrence_array = [0] * 26
for char in string:
if not char.isalpha():
continue
arr_index = ord(char) - ord('a')
alphabet_occurrence_array[arr_index] += 1
max_occurrence = 0
max_alphabet_index = 0
for index in range(len(alphabet_occurrence_array)):
alphabet_occurrence = alphabet_occurrence_array[index]
if alphabet_occurrence > max_occurrence:
max_occurrence = alphabet_occurrence
max_alphabet_index = index
def find_max_occurred_alphabet(string):
alphabet_occurrence_array = [0] * 26
for char in string:
if not char.isalpha():
continue
arr_index = ord(char) - ord('a')
alphabet_occurrence_array[arr_index] += 1
max_occurrence = 0
max_alphabet_index = 0
for index in range(len(alphabet_occurrence_array)):
alphabet_occurrence = alphabet_occurrence_array[index]
if alphabet_occurrence > max_occurrence:
max_occurrence = alphabet_occurrence
max_alphabet_index = index
return chr(max_alphabet_index + ord('a'))
result = find_max_occurred_alphabet
print("정답 = a 현재 풀이 값 =", result("Hello my name is sparta"))
print("정답 = a 현재 풀이 값 =", result("Sparta coding club"))
print("정답 = s 현재 풀이 값 =", result("best of best sparta"))
count += 1 비슷하게 들어갈 줄 알았다. A. 에서 occurrence += 1을 사용했다.
A 코드가 나에게 맞는 거 같다. A 위주로 공부를 해도 되는 것일까? B를 사용하게 되면 그때 가서 배우면 되는 것일까?
* 1-8강 점근 표기법 퀴즈
✍️ Q. 배열에서 특정 요소 찾기
▶ 옳은 코드)
def is_number_exist(number, array):
for element in array:
if number == element:
return True
return False
result = is_number_exist
print("정답 = True 현재 풀이 값 =", result(3,[3,5,6,1,2,4]))
print("정답 = Flase 현재 풀이 값 =", result(7,[6,6,6]))
print("정답 = True 현재 풀이 값 =", result(2,[6,9,2,7,1888]))
for element in array: # array 의 길이만큼 아래 연산이 실행
if number == element: # 비교 연산 1번 실행
return True
return False
* 1-9강 알고리즘과 더 풀어보기(1) 퀴즈
✍️ Q. 곱하기 or 더하기
▶ 옳은 코드)
def find_max_plus_or_multiply(array):
multiply_sum = 0
for number in array:
if number <= 1 or multiply_sum <= 1:
multiply_sum += number
else:
multiply_sum *= number
return multiply_sum
result = find_max_plus_or_multiply
print("정답 = 728 현재 풀이 값 =", result([0,3,5,6,1,2,4]))
print("정답 = 8820 현재 풀이 값 =", result([3,2,1,5,9,7,4]))
print("정답 = 270 현재 풀이 값 =", result([1,1,1,3,3,2,5]))
✍️ Q. 반복되지 않는 문자
▶ 옳은 코드)
def find_not_repeating_first_character(string):
alphabet_occurrence_array = [0] * 26
for char in string:
if not char.isalpha():
continue
arr_index = ord(char) - ord("a")
alphabet_occurrence_array[arr_index] += 1
not_repeating_character_array = []
for index in range(len(alphabet_occurrence_array)):
alphabet_occurrence = alphabet_occurrence_array[index]
if alphabet_occurrence == 1:
not_repeating_character_array.append(chr(index + ord("a")))
for char in string:
if char in not_repeating_character_array:
return char
return "_"
result = find_not_repeating_first_character
print("정답 = d 현재 풀이 값 =", result("abadabac"))
print("정답 = c 현재 풀이 값 =", result("aabbcddd"))
print("정답 =_ 현재 풀이 값 =", result("aaaaaaaa"))
* 1-11강 1주차 끝 & 숙제
✍️ Q. 소수 나열하기
▶ 옳은 코드)
✍️ Q. 문자열 뒤집기
▶ 옳은 코드)
[ 2주차 계획 ]
- 스파르타코딩클럽 계획
✔ 월: javascript 올인원
✔ 화: 파이썬 문법 기초
✔ 수: 파이썬 문법 기초/ 자료구조 알고리즘
□ 목: 자료구조 알고리즘
□ 금: 자료구조 알고리즘
- 나의 계획
✔ 파이썬 문법 나머지 기초 완강하기
✔ 자료구조 알고리즘 1주차 듣기
✔ 오답노트 다시 보기