input = "hello my name is sparta"
def find_max_occurred_alphabet(string):
alphabet_occurrence_array = [0] * 26
string = ''.join(string.split())
# 원래 조인함수는 리스트에 써야되는데 string.split()하면 리스트에 담기니까 사용가능
max_index = 0
for i in range(len(string)):
alphabet_occurrence_array[ord(string[i]) - ord('a')] += 1
for i in range(len(alphabet_occurrence_array)):
if alphabet_occurrence_array[i] == max(alphabet_occurrence_array):
max_index = chr(i + ord('a'))
# return chr(i + ord('a')) #if 종료(정답)
return max_index #if 종료(정답)
# return max_index # for 종료(정답x) ->0출력
# if문 실행 안되고 max_index는 계산된 적이 없는 상태로 for문 위 초기값 0으로 나옴
# return max_index # def 종료(정답)
# max_index 초기값이 나오지 않으려면 다 계산된 다음(for문 다 돌리고) 리턴을 해줘야지 for문 계산 중간에 리턴하면 다 비교를 안해보고.. 출력된다
result = find_max_occurred_alphabet(input)
print(result)
-> if 조건을 만족시키면!! 리턴하는거니까 if문 안에 리턴을 해야한다!!!
-> for 안에 리턴이 있으면 if문에 조건이 걸려있긴 하지만 첫번째 요소에 대해서만 if문이 실행되고 실제로 그 조건에 맞는 답을 리턴할 수 없다
-> for문과 return의 인덴트가 같으면 for문을 다 돌고난 후에야 리턴이 되니까 i에 그냥 맨 마지막 Z값이 반영된다
⭐️⭐️⭐️초기값 설정⭐️⭐️⭐️
초깃값은 엉뚱한거 하지말고 가장 기본적인걸로 생각해야함
count는 0으로, 배열 비교를 하려면 가장 첫번째값으로!
input_ = "best of best sparta"
def find_max_occurred_alphabet(string):
alphabet_list = 'a b c d e f g h i j k l m n o p q r s t u v w x y z'.split()
max_occurrence = 0
max_alphabet = alphabet_list[0]
# max_alphabet 초기화를 for문 안에서하면 값이 계속 초기화되잖아ㅠㅠㅠㅠㅠ
for alphabet in alphabet_list:
occurrence = 0
# for i in range(len(alphabet_list)):
for char in string:
# if char == alphabet_list[i]:
if char == alphabet:
occurrence += 1
if occurrence > max_occurrence:
max_occurrence = occurrence
max_alphabet = alphabet
return max_alphabet
result = find_max_occurred_alphabet(input_)
print(result)
def find_alphabet_occurrence_array(string):
alphabet_occurrence_array = [0] * 26
for char in string:
if not char.isalpha():
continue
index_arr = ord(char) - ord('a')
alphabet_occurrence_array[index_arr] += 1
# 몇번째(번호)가 필요하다고해서 꼭 for i in range()를 쓸 필요가 없다!
# 여기서부터 어떻게 찾지가 아니라 리스트 안에서 최댓값 찾는 거랑 로직이 똑같음
# 제일 큰 값을 찾고
# 그 값의 인덱스를 찾고
# 그 인덱스에 해당하는 알파벳을 찾으면 됨
max_occurrence = 0
max_index = 0
for index in range(len(alphabet_occurrence_array)):
if alphabet_occurrence_array[index] > max_occurrence:
max_occurrence = alphabet_occurrence_array[index]
max_index = index
return chr(max_index+ord('a'))
print(find_alphabet_occurrence_array("oh i also liked it it was the besttttt ever"))
와 기본수학 첫번째 문제에서 이렇게 헤맬줄이야.. 수학식으로 풀면 진짜 쉬운건데 코드로 표현하려니 이전 문제들이랑은 또 다르다 희한한다
출력초과는 도대체 어떻게 난건가하면
반복문 계속 돌리기^^
어디에 뭘 써야하는지 감이 안잡혀서 10번 틀렸다 ㅋㅋㅋ 진짜 현타 씨게온당
내가 깨달은 바로는 당연하게도 조건을 적어야하는 자리에 조건을 적고
값을 내는 자리에 값을 적어야한다는 것
밤이라 제정신이 아니었던거라고 생각하고 싶당ㅎㅅㅎ
print(f'에러발생:{e}')
from pprint import pprint
people = [
("lee", 32, "man"),
("kim", 23, "man"),
("park", 27, "woman"),
("hong", 29, "man"),
("kang", 26, "woman")
]
people_1 = [person[0] for person in people]
pprint(people_1)
# 리스트에 담긴다
# ['lee', 'kim', 'park', 'hong', 'kang']
people_2 = {(name,gender):age
for name, age, gender in people}
pprint(people_2)
# 딕셔너리에 담긴다
# 알아서 각 행의 요소들을 순서대로 변수에 담는다
#{('hong', 'man'): 29,
# ('kang', 'woman'): 26,
# ('kim', 'man'): 23,
# ('lee', 'man'): 32,
# ('park', 'woman'): 27}