내일배움캠프 4기 React 12일차 (github, algorighm re)

최영진·2022년 11월 15일
0
post-custom-banner

1. github 정리

2. 웹 퍼블리싱

  • 2주차 숙제에 막힘

3. algorighm re

  • algorighm 문제가 심화되면서 전에 배운 내용부터 복습하기로 함.

  • week_1 주차 복습

  • 최대값 찾기 :
    for문을 통해 array를 돌림 > array의 i 값이 num 값 보다 크면 num에 i 저장

    def find_max_num(array):
       num = 0
       for i in array:
           if i > num:
               num = i
    
       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])
  • 최빈값 찾기 : 주어진 문자열에서 가장 많이 나온 알파벳 찾기
    알파벳은 아스키코드를 이용하여 숫자로 변경가능!!

    alphabet_occurred_array에 알파벳이 나올때 마다 그 index에 +1 을 해주어
    최다 빈도의 알파벳 index를 알 수 있고
    아스키 코드로 최다빈도의 index를 찾아 다시 문자로 변경해주어 찾을 수 있다.
    모르면 풀기 어려울 문제.

    def find_max_occurred_alphabet(string):
       alphabet_occurred_array = [0] * 26
    
       for alpha in range(len(string)):
           if string[alpha].isalpha():
               alphabet_index = ord(string[alpha]) - ord('a')
               alphabet_occurred_array[alphabet_index] += 1
    
       x = alphabet_occurred_array.index(max(alphabet_occurred_array))
    
       z = chr(x + ord('a'))
    
       return z
    print("정답 = a 현재 풀이 값 =", find_max_occurred_alphabet("Hello my name is sparta"))
    print("정답 = a 현재 풀이 값 =", find_max_occurred_alphabet("Sparta coding club"))
    print("정답 = s 현재 풀이 값 =", find_max_occurred_alphabet("best of best sparta"))
  • array에 숫자가 포함되어 있나 찾기 :
    주어진 array를 while문으로 돌려 number가 in 이면 True, 없으면 False 반환

    def is_number_exist(number, array):
       while number in array:
           return True
       else:
           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]))
    
  • 처음 반복이 끝나는 문자열 찾기 :
    최다빈도 알파벳 찾기 코드를 가져와 반복되지 않아 1회만 나온 알파벳 위치를 파악하고, 다시 아스키코드로 되돌려 알파벳을 찾는다.
    이 때, 이렇게만 찾으면 d, c 가 나왔어도 c 가 출력되게 되므로
    이 d, c를 행렬에 다시 저장하고 array에 포함될시 출력을 하게 짜므로
    처음 반복이 끝나는 문자열을 출력할 수 있다!

    def find_not_repeating_first_character(string):
       alphabet_occurred_array = [0] * 26
    
       for alpha in range(len(string)):
           if string[alpha].isalpha():
               alphabet_index = ord(string[alpha]) - ord('a')
               alphabet_occurred_array[alphabet_index] += 1
    
       no_alphabet = []
       for no_alpha in range(len(alphabet_occurred_array)):
           if alphabet_occurred_array[no_alpha] == 1:
               no_alphabet.append(chr(no_alpha + ord('a')))
    
       for char in string:
           if char in no_alphabet:
               return char
       return "_"
    result = find_not_repeating_first_character
    print("정답 = d 현재 풀이 값 =", result("abadabac"))
    print("정답 = c 현재 풀이 값 =", result("aabbcddd"))
    print("정답 =_ 현재 풀이 값 =", result("aaaaaaaa"))
    
    

4. 금일 회고

  • github 관련 일 처리는 이제 쉽게 가능하다.
  • 웹 퍼블리싱 강의가 좀 심히 어려운 것 같다. 실습 위주가 아니라 줄줄이 읽다가 과제를 내는 방식이라 어떤 식으로 처리를 해야할지 모르겠다.
  • algorighm 문제들은 다시 풀어도 잘 떠오르지 않는다. 남은기간 복습 확실히 잡고 가야겠다.
profile
안녕하시오.
post-custom-banner

1개의 댓글

comment-user-thumbnail
2022년 11월 16일

오 깃헙이 쉬워졌다니... 멋집니다!!!

답글 달기