๐Ÿญ์•Œ๊ณ ๋ฆฌ์ฆ˜ 4์ผ์ฐจ

๊น€ํƒœ์ธยท2022๋…„ 7์›” 23์ผ
0

์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ชฉ๋ก ๋ณด๊ธฐ
3/9

์•Œ๊ณ ๋ฆฌ์ฆ˜ 4์ผ์ฐจ


์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋” ํ’€์–ด๋ณด๊ธฐ(1)

  • Q. ๋‹ค์Œ๊ณผ ๊ฐ™์ด 0 ํ˜น์€ ์–‘์˜ ์ •์ˆ˜๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด์ด ์žˆ์„ ๋•Œ, ์™ผ์ชฝ๋ถ€ํ„ฐ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•˜๋‚˜์”ฉ ๋ชจ๋“  ์ˆซ์ž๋ฅผ ํ™•์ธํ•˜๋ฉฐ ์ˆซ์ž ์‚ฌ์ด์— 'โœ•' ํ˜น์€ '+' ์—ฐ์‚ฐ์ž๋ฅผ ๋„ฃ์–ด ๊ฒฐ๊ณผ์ ์œผ๋กœ ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.
    ๋‹จ, '+' ๋ณด๋‹ค 'โœ•' ๋ฅผ ๋จผ์ € ๊ณ„์‚ฐํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฐฉ์‹๊ณผ๋Š” ๋‹ฌ๋ฆฌ, ๋ชจ๋“  ์—ฐ์‚ฐ์€ ์™ผ์ชฝ์—์„œ ์ˆœ์„œ๋Œ€๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.
  • ๋ฌธ์ œ ์ฝ”๋“œ
    [0, 3, 5, 6, 1, 2, 4]
    
    def find_max_plus_or_multiply(array):
        return 1
    
    result = find_max_plus_or_multiply
    print("์ •๋‹ต = 728 ํ˜„์žฌ ํ’€์ด ๊ฐ’ =", result([0,3,5,6,1,2,4]))
    print("์ •๋‹ต = 8820 ํ˜„์žฌ ํ’€์ด ๊ฐ’ =", result([3,2,1,5,9,7,4]))
    print("์ •๋‹ต = 270 ํ˜„์žฌ ํ’€์ด ๊ฐ’ =", result([1,1,1,3,3,2,5]))
  • ์ด ๋ฌธ์ œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ•ต์‹ฌ์€ 0๊ณผ 1์„ ๊ณฑํ–ˆ์„ ๋•Œ๋Š” ๋”ํ•˜๋Š” ๊ฒƒ์ด ์˜คํžˆ๋ ค ๋” ํด ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ
  • ๊ทธ๋ ‡๋‹ค๋ฉด ์ฐธ์กฐํ•˜๋Š” ์ˆซ์ž ๊ฐ’์— 0๊ณผ 1์ด ์žˆ๋‹ค๋ฉด ๋”ํ•ด๋ณด๊ณ , 1๋ณด๋‹ค ํฌ๋‹ค๋ฉด ๊ณฑํ•ด๋ณด๋Š” ๋ถ„๊ธฐ ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•ด๋ณด์ž
  • ์ •๋‹ต ์ฝ”๋“œ
    def find_max_plus_or_multiply(array):
        multiply_sum = 0
        for number in array:
            if number <= 1 or multiply_sum <= 1:
                multiply_sum += number
            else:
                multiply_sum *= number
        return multiply_sum
    
    result = find_max_plus_or_multiply
    print("์ •๋‹ต = 728 ํ˜„์žฌ ํ’€์ด ๊ฐ’ =", result([0,3,5,6,1,2,4]))
    print("์ •๋‹ต = 8820 ํ˜„์žฌ ํ’€์ด ๊ฐ’ =", result([3,2,1,5,9,7,4]))
    print("์ •๋‹ต = 270 ํ˜„์žฌ ํ’€์ด ๊ฐ’ =", result([1,1,1,3,3,2,5]))
  • ์—ญ์„ค๊ณ„ ์ฝ”๋“œ
    def find_max_plus_or_multiply(array):
        multiply_sum = 0
        for number in array:
            if number <= 1 or multiply_sum <= 1:
                multiply_sum += number
            else:
                multiply_sum *= number
        return multiply_sum
    
    result = find_max_plus_or_multiply
    print("์ •๋‹ต = 728 ํ˜„์žฌ ํ’€์ด ๊ฐ’ =", result([0,3,5,6,1,2,4]))
    print("์ •๋‹ต = 8820 ํ˜„์žฌ ํ’€์ด ๊ฐ’ =", result([3,2,1,5,9,7,4]))
    print("์ •๋‹ต = 270 ํ˜„์žฌ ํ’€์ด ๊ฐ’ =", result([1,1,1,3,3,2,5]))
    • ์˜์‚ฌ์ฝ”๋“œ๋กœ ์ ์–ด๋ณด๊ธฐ
      1. ๋ฉ€ํ‹ฐํ”Œ์ธ์€ ์˜์ด๋‹ค.
      2. ์–ด๋ ˆ์ด ์ค‘์— ๋„˜๋ฒ„1 ๋„˜๋ฒ„2 ์ด๋ ‡๊ฒŒ ๋“ค์–ด๊ฐ€๊ฒ ์ง€ ๊ทธ๋ ‡๊ฒŒ ๋Œ์•„๊ฐ€
      3. ๋งŒ์•ฝ ๊ทธ ๋„˜๋ฒ„๊ฐ€ 1๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™ ๋˜๋Š” ๋ฉ€ํ‹ฐํ”Œ์ธ์ด 1๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด
      4. ๋ฉ€ํ‹ฐํ”Œ์ธ์€ ๋ฉ€ํ‹ฐํ”Œ์ธ ๋”ํ•˜๊ธฐ ๋„˜๋ฒ„์ž„
      5. ์•„๋‹ˆ๋ฉด ๋ฉ€ํ‹ฐํ”Œ์ธ์€ ๋ฉ€ํ‹ฐํ”Œ์ธ ๊ณฑํ•˜๊ธฐ ๋„˜๋ฒ„์ž„ ๋Œ์•„๋Œ์•„
      6. ๋ฉ€ํ‹ฐํ”Œ์ธ์„ ๋ฆฌํ„ดํ•ด์ค˜


    • ๋กœ์ง์„ ์„ค๊ณ„

      1. ๋ฉ€ํ‹ฐํ”Œ์ธ์ด๋ผ๋Š” ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜ ํ•„์š”
      2. ๊ณฑํ•˜๊ธฐ์™€ ๋”ํ•˜๊ธฐ๊ฐ€ ๊ฒฝ์šฐ๊ฐ€ ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์„ ์ธ์ง€
      3. ๊ณฑํ•˜๊ธฐ์˜ ๊ฒฝ์šฐ๊ฐ€ ๋‚˜์™”์„ ๋•Œ๋Š” ๋ฉ€ํ‹ฐํ”Œ์ธ์—์„œ ๊ณฑํ•ด์ฃผ๊ณ 
        1. ๊ณฑํ•ด์ฃผ๊ธฐ ์œ„ํ•œ ์กฐ๊ฑด์€ 0๊ณผ 1์ด ์•„๋‹ˆ์–ด์•ผ ํ•œ๋‹ค
      4. ๋”ํ•˜๊ธฐ์˜ ๊ฒฝ์šฐ๊ฐ€ ๋‚˜์™”์„ ๋•Œ๋Š” ๋ฉ€ํ‹ฐํ”Œ์ธ์—์„œ ๋”ํ•ด์ฃผ๊ณ 
        1. ๋”ํ•ด์ฃผ๊ธฐ ์œ„ํ•œ ์กฐ๊ฑด์€ 0๊ณผ 1์ด์–ด์•ผ ํ•œ๋‹ค
      5. ๋ถ„๊ธฐ๋งˆ๋‹ค ์กฐ๊ฑด์ด ๋‹ค๋ฅด๋ฉด if ์จ์ฃผ๊ธฐ
      6. ๋ฐฐ์—ด์„ ๋Œ์•„์•ผ ํ•˜๋‹ˆ๊นŒ for ์•ˆ์— if
      7. ๋งˆ์ง€๋ง‰์— ๋ฉ€ํ‹ฐํ”Œ์ธ์„ ๋ฆฌํ„ด

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋” ํ’€์–ด๋ณด๊ธฐ(2)

  • Q. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์˜์–ด๋กœ ๋˜์–ด ์žˆ๋Š” ๋ฌธ์ž์—ด์ด ์žˆ์„ ๋•Œ, ์ด ๋ฌธ์ž์—ด์—์„œ ๋ฐ˜๋ณต๋˜์ง€ ์•Š๋Š” ์ฒซ๋ฒˆ์งธ ๋ฌธ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜์‹œ์˜ค. ๋งŒ์•ฝ ๊ทธ๋Ÿฐ ๋ฌธ์ž๊ฐ€ ์—†๋‹ค๋ฉด _ ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์‹œ์˜ค.
  • ๋ฌธ์ œ ์ฝ”๋“œ
    input = "abadabac"
    
    def find_not_repeating_first_character(string):
        # ์ด ๋ถ€๋ถ„์„ ์ฑ„์›Œ๋ณด์„ธ์š”!
        return "_"
    
    result = find_not_repeating_first_character
    print("์ •๋‹ต = d ํ˜„์žฌ ํ’€์ด ๊ฐ’ =", result("abadabac"))
    print("์ •๋‹ต = c ํ˜„์žฌ ํ’€์ด ๊ฐ’ =", result("aabbcddd"))
    print("์ •๋‹ต =_ ํ˜„์žฌ ํ’€์ด ๊ฐ’ =", result("aaaaaaaa"))
  • ์ •๋‹ต ์ฝ”๋“œ
    input = "kim hee jeong"
    
    def find_not_repeating_first_character(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
    
    		[0,0,1,.,1,5,2,6,2]
    
    		not_repeat = []
        for index in range(len(alphabet_occurrence_array)):
    				a,b,c ์ˆœ์„œ๋Œ€๋กœ
    				0,0,1,.,1,5,2,6,2
            count = alphabet_occurrence_array[index]
    
            if alphabet_occurrence == 1:
    						a ์— ์žˆ๋‚˜..? 1์ด๋„ค ๊ทธ๋Ÿผ a ์ถ”๊ฐ€
    						b ์— ์žˆ๋‚˜..? 0์ด๋„ค ๊ทธ๋Ÿผ ํŒจ์Šค
                not_repeating_character_array.append(chr(index + ord("a")))
    						not_ repeat๋Š” ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ๋Œ€๋กœ [g h i k m n o] ๊ฐ€ ๋œ๋‹ค
    
    		a,b,c ์ˆœ์„œ๋Œ€๋กœ๋ผ๋ฉด ๋ฌด์ž‘์œ„ ๋ฌธ์ž์—ด์ด ์•„๋‹Œ abc ์ค‘์—์„œ ์ œ์ผ ๋น ๋ฅธ๋†ˆ์ด ๋‚˜์™€๋ฒ„๋ ท
    		๊ทธ๊ฑธ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ฌด์ž‘์œ„ ๋ฌธ์ž์—ด์ธ ์ธํ’‹์„ ๋‹ค์‹œ ์ฐธ์กฐ!
        for char in string:
    				char = k i m h e e j e o n g
            if char in not_repeating_character_array:
    						k๊ฐ€ not_repeat ์•ˆ์— ๋“ค์–ด์žˆ๋ƒ? ์‘! ๋ฐ”๋กœ ๋นผ!
                return char
    
        return "_"
    
    result = find_not_repeating_first_character
    print("์ •๋‹ต = d ํ˜„์žฌ ํ’€์ด ๊ฐ’ =", result("abadabac"))
    print("์ •๋‹ต = c ํ˜„์žฌ ํ’€์ด ๊ฐ’ =", result("aabbcddd"))
    print("์ •๋‹ต =_ ํ˜„์žฌ ํ’€์ด ๊ฐ’ =", result("aaaaaaaa"))
    • ์ฝ”๋“œ ํ•œ๊ธ€ ๋ฒˆ์—ญํ•˜๊ธฐ ์ž ์Œ ๋ญ๋ผ ๋งํ•ด์•ผ๋Œ€์ง• ์•ŒํŒŒ๋ฒณ a~z๋ฅผ ์ง‘์–ด๋„ฃ์„ [0]*26์–ด๋ ˆ์ด๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค ํฌ๋ฌธ์œผ๋กœ string์•ˆ์—์„œ char๋ฅผ ๋Œ๋ ค์š” if๋กœ char๊ฐ€ ์•ŒํŒŒ๋ฒณ์ด ์•„๋‹ˆ๋ผ๋ฉด! ์ง„ํ–‰ํ•œ๋‹ค arr_index ๋Š” ord(char) - ord(โ€aโ€) ๊ฐ€ ๋‚˜์˜ค์ฃ  โ‡’ ์•„์Šคํ‚ค์ฝ”๋“œ ์ˆซ์ž-์•„์Šคํ‚ค์ฝ”๋“œ์ˆซ์ž ์œ„์— ๋‚˜์˜จ๊ฒƒ์„ ์•„๊นŒ๋งŒ๋“  ์–ด๋ ˆ์ด ๋ฐฐ์—ด์— +1ํ•ด์„œ๋„ฃ์–ด์š” not_repeating_character_array= [] ๋ผ๋Š” ๋นˆ ์–ด๋ ˆ์ด๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค alphabet_occurrence_array ๊ธธ์ด๋งŒํผ range ์•ˆ์—์„œ index๋ฅผ ํฌ๋ฌธ์„ ๋Œ๋ ค์š” alphabet_occurrence = alphabet_occurrence_array[index] ์–ด์Œ.. ์ž…๋ ฅํ•œ ๊ฐ’์˜ ์•ŒํŒŒ๋ฒณ์ด ๋“ค์–ด๊ฐ„ ๋นˆ๋„ ๊ฐ’์„ ๋ณ€์ˆ˜๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค ๋„ค ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค ์ด์ œ if๋ฌธ์œผ๋กœ alphabet_occurrence ๊ฐ€ 1์ด๋ผ๋ฉด? not_repeating_character_array ์— chr(index+ord(โ€aโ€)) ๋กœ ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•ด์„œ ๋ฆฌ์ŠคํŠธ์— ๋„ฃ์–ด์ค๋‹ˆ๋‹ค ์•„ ๊ทธ์ณ chr์ด๋‹ˆ๊นŒ ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•ด์„œ! ์—ฌ๊ธฐ๊นŒ์ง€ ํ•˜๊ณ  for๋ฌธ์œผ๋กœ ๋‹ค์‹œ string์•ˆ์—์„œ char๋ฅผ ๋Œ๋ ค์š” if๋ฌธ์œผ๋กœ not_repeating_character_array์•ˆ์— char ์žˆ๋”ฐ๋ฉด ๋ฐ”๋กœ char๋ฅผ ๋ฐ˜ํ™˜ํ•ด๋ผ! ์—†๋‹ค๋ฉด? โ€œ_โ€๋ฅผ ๋ฐ˜ํ™˜ํ•ด๋ผ
    • ๋กœ์ง
      • ๋นˆ๋„ ์ˆ˜๋ฅผ ํ™œ์šฉํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฝ”๋“œ ์‚ฌ์šฉํ•ด์„œ ์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž์—ด์„ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ ค ๋นˆ๋„ ๊ฐ’์„ 26๊ฐœ ๊ธธ์ด์˜ ๋ฆฌ์ŠคํŠธ์— ์ €์žฅํ•˜๊ธฐ
      • ์ €์žฅํ•œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ๊ฐ ์š”์†Œ์˜ ๊ฐ’์ด 1์ธ ์ธ๋ฑ์Šค์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ž๋ฅผ ๋ฝ‘์•„์„œ ์ƒˆ๋กœ์šด ๋ฆฌ์ŠคํŠธ์— ์ €์žฅํ•˜๊ธฐ
      • ๋‹ค์‹œ ์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž์—ด์„ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ ค ๊ฐ’์ด 1์ธ ๋ฆฌ์ŠคํŠธ ์•ˆ์˜ ๋ฌธ์ž์™€ ์ผ์น˜ํ•˜๋ฉด ๋ฐ”๋กœ ๋ฆฌํ„ดํ•ด๋ฒ„๋ฆฌ๊ธฐ
    • ์˜์‚ฌ์ฝ”๋“œ
profile
์ฝ”๋”ฉ์ด ์ทจ๋ฏธ๊ฐ€ ๋˜๋Š” ๊ทธ๋‚ ๊นŒ์ง€

0๊ฐœ์˜ ๋Œ“๊ธ€