코딩테스트
하루 코테 3문제풀기 - 3일차
songsua
2024. 12. 13. 19:46
1. 최댓값구하기(백준2562번)
9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.
예를 들어, 서로 다른 9개의 자연수
3, 29, 38, 12, 57, 74, 40, 85, 61
이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다.
def find_max_num(array):
# 이 부분을 채워보세요!
for n in array :
#특정 사실에 대한 여부를 저장하기 위한 변수를 flag 변수라고 표현한다.
is_max_num = True
for compare_number in array:
if n < compare_number :
is_max_num = False
if is_max_num:
return n
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]))
다른 방법
#하나의 변수를 잡아서 그 변수와 비교하며 가장 큰 수를 찾는 방법
def find_num(array):
max_num = array[0]
for n in array :
if n > max_num:
max_num = n
return max_num
array = list(map(int, input("숫자를 공백으로 구분해 입력하세요: ").split()))
max_num = find_num(array)
print("가장 큰 수는:", max_num)
#find_max_num([6, 9, 2, 7, 1888]))
모범답안
num_list = []
for i in range(9) :
num_list.append(int(input())) ## num_lst 안에 입력된 값들 차례대로 넣기
print(max(num_list)) ## max라는 메소드를 이용해 num_lst 내의 최댓값 출력하기
print(num_list.index(max(num_list))+1)
2. 최빈값 구하기
문자의 중복값을 확인할려면 아스키 코드를 사용해야 한다.
ord('a') = 97 이다. a 의 아스키 코드는 97이다
혹은 chr 함수를 사용해서 아스키 코드를 알파벳으로 변환한다.
#2.하나하나 알파벳으로 알아내는 방법
def max_alphabet(x) :
first_array = [0]* 26
for i in x :
if not i.isalpha():
continue
arr_index = ord(i) - ord('a')
first_array[arr_index] +=1 #빈도수 배열에 인덱스로 찾아가서 해당 값을 추가해준다
#중간점검
print(first_array)
#이제 배열중에서 가장 큰 것을 알아내는 법
max_occur = 0
max_alphabet_index = 0
#최고의 값중 몇번째 인덱스인지를 알아내야한다.
#array 의 range만큼 순회를 진행할 것이다. 즉 총 26번
#26번의 길이 만큼 인덱스를 뽑아 내기
for i in range(len(first_array)) :
occur = first_array[i]
if occur > max_occur :
max_occur = occur
max_alphabet_index = i #몇번째가 인덱스가 가장 큰지 반환한다.
#인덱스인 아스키코드에서 알파벳으로 변경하기
return chr(max_alphabet_index + ord('a'))
print(max_alphabet_index)
result = max_alphabet
print("정답 = i 현재 풀이 값 =", result("hello my name is dingcodingco"))
print("정답 = e 현재 풀이 값 =", result("we love algorithm"))
print("정답 = b 현재 풀이 값 =", result("best of best youtube"))
3.원하는 숫자 찾기
Q. 다음과 같은 숫자로 이루어진 배열이 있을 때, 이 배열 내에 특정 숫자가 존재한다면 True, 존재하지 않다면 False 를 반환하시오.
def is_number_exist(number, array):
# 이 부분을 채워보세요!
for i in array :
if number == i:
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]))