문제의 해결
을 위하여, 입력된 자료를 토대로 원하는 출력을 유도하여 내는 규칙의 집합좋은 개발자가 되기 위해
좋은 프로그램
을 구현할 줄 알아야함적은 공간을 이용 빠른 속도로 수행
하는 프로그램특정자료구조
나 접근방법
을 사용해야 함좋은 회사에 취직하기 위해
유망 IT기업 외에도 많은 스타트업까지 코딩테스트를 개발자의 필수 관문
으로 삼고있음
기초적인 지식과 해결책
으로 적절한 사고
를 할 수 있는지에 대한 검증
숫자로 이루어진 배열
이 있을 때 , 이 배열 내에서 가장 큰 수를 반환
하시오[3, 5, 6, 1, 2, 4]
input = [3, 5, 6, 1, 2, 4]
def find_max_num(array):
for num in array:
for compare_num in array:
if num < compare_num:
break
else:
return num
result = find_max_num(input)
print(result)
input = [3, 5, 6, 1, 2, 4]
def find_max_num(array):
max_num = array[0]
for num in array:
if num > max_num:
max_num = num
return max_num
result = find_max_num(input)
print(result)
def find_max_occurred_alphabet(string):
# 이 부분을 채워보세요!
return "a"
result = find_max_occurred_alphabet(input)
print("정답 = a 현재 풀이 값 =", result("Hello my name is sparta"))
print("정답 = a 현재 풀이 값 =", result("Sparta coding club"))
print("정답 = s 현재 풀이 값 =", result("best of best sparta"))
파이썬의 내장함수 str.isalpha()
를 이용
print("a".isalpha())
print("1".isalpha())
s = "abcdefg"
print(s[0].isalpha()) # True
알파벳 별로 빈도수를 리스트에 저장하기
# [0,0,0,0,0,0,...,0,0]
alphabet_occurrence_array = [0] * 26
컴퓨터는 0과 1숫자 밖에 모름, 때문에 문자도 숫자
로 기억함
이때 어떤 숫자와 어떤 문자를 대응
시키는가에 따라 여러가지 인코딩 방식
이 있는데 통상 아스키 코드
방식을 많이 사용함
# 내장 함수 ord() 이용해서 아스키 값 받기
print(ord('a'))
필요한것
필요한 코드 작성법
문자를 숫자로 변경하는 방법
ord("알파벳")
을 사용한다alphabet = "a"
ord_alphabet = ord(alphabet)
print(ord_alphabet)
알파벳이 몇 번 들어올 지 저장할 방법
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"]
alphabet_list = [0] * 26
어떤 알파벳이 가장 많이 들어왔는지 확인할 방법
가장 많이 들어온 알파벳을 리턴
리스트.index(값)
이다.list_fruits = ["사과", "배", "체리"]
favorite_fruit = "배"
index_num = list_fruits.index(favorite_fruit)
알고리즘 작성 및 코딩
입력받은 문자를 알파벳 단위로 잘라내기
list()
메서드를 사용하면 글자 단위로 분해할 수 있다.source_sentence = "go go coding of co! 0719-2022"
source_list = list(source_sentence)
str.isalpha(값)
을 사용해서 알파벳인 값만 리스트에 담아주자source_list = []
for char in list(source_sentence):
if str.isalpha(char):
source_list.append(char)
알파벳 리스트 작성
alphabet_list = [0] * 26
알파벳 카운트
for char in source_list:
# 알파벳을 번호로 만들기
ord(char)
# 알파벳을 0~25 사이의 숫자로 만드려면 a~z의 값에서 a를 빼주면 된다!
target_index = ord(char) - ord("a")
for char in source_list:
target_index = ord(char) - ord("a")
alphabet_list[target_index] += 1
알파벳 최댓값, 최빈값 찾기
max_num = alphabet_list[0]
for num in alphabet_list:
if num > max_num:
max_num = num
# 최대수를 값으로 인덱스 찾아내기
target_index = alphabet_list.index(max_num)
# chr을 사용해서 다시 문자로 변환
target_char = chr(target_index)
source_sentence = "go go coding of co! 0719-2022"
source_list = []
for char in list(source_sentence):
if str.isalpha(char):
source_list.append(char)
alphabet_list = [0] * 26
for char in source_list:
target_index = ord(char) - ord("a")
alphabet_list[target_index] += 1
max_num = alphabet_list[0]
for num in alphabet_list:
if num > max_num:
max_num = num
target_index = alphabet_list.index(max_num)
target_char = chr(target_index)
각 알파벳마다 문자열을 돌며 몇 글자가 나왔는지 확인
먄약 그 숫자가 저장한 알파벳 빈도 수보다 크면, 그 값을 저장하고 제일 큰 알파벳으로 저장
이 과정을 반복!
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"]
# 초기의 최빈값은 0, 리스트의 0번째 인덱스값(즉, "a")은 max_alphabet으로 설정
max_occurrence = 0
max_alphabet = alphabet_array[0]
# a-z 에서 a를 alphabet으로 돌림 (발생빈도는 0)
for alphabet in alphabet_array:
occurrence = 0
# 우리가 넣고 싶은 문자열의 첫 글자 넣기(H..e..l..l.o..m.....a!)
# alphabet과 같으면 발생빈도를 1 올리고 다시 for 돌림
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"))
각 알파벳의 빈도수를 alphabet_occurrence_list라는 변수에 저장
각 문자열을 돌면서 해당 문자가 알파벳인지를 확인
알파벳을 인덱스화 시켜 각 알파벳의 빈도수를 업데이트
알파벳의 빈도수가 가장 높은 인덱스를 알아냈죠
여기서 max_alphabet_index가 0이기 때문에 인덱스를 문자로 변경해야 함!
아스키 코드번호
를 실제 문자
로 변환하려면 chr()함수를 사용
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"))