코딩테스트

하루 코테 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]))