파이썬 등차수열로 표현하기.//

조회수 673회
import random
import math
import numpy as np
import pandas as pd
import xlwings as xw
arr1,arr2,arr3 = [],[],[]
arr4,arr5,arr6 = [],[],[]
arr7,arr8,arr9 = [],[],[]
arr10,arr11,arr12 = [],[],[]
arr13,arr14,arr15 = [],[],[]
arr16,arr17,arr18 = [],[],[]
arr19,arr20,arr21 = [],[],[]
arr22,arr23,arr24 = [],[],[]
arr25,arr26,arr27 = [],[],[]
arr28,arr29,arr30 = [],[],[]
arr31,arr32,arr33 = [],[],[]
arr34,arr35,arr36 = [],[],[]
for i in range(70):
        ax = int(random.choice(A1))
        result1 = ax
        arr1.append(result1)
for i in range(20):
        ax = int(random.choice(B1))
        result2 = ax
        arr2.append(result2)
for i in range(10):
        ax = int(random.choice(C1))
        result3 = ax
        arr3.append(result3)

A1 = (1,2,3,4,5,6,7,8,9,10,6,7,8,9,10,11,12,13,14,15)
B1 = (21,22,23,24,25,26,27,28,29,30,26,27,28,29,30,31,32,33,34,35,41,42,43,44,45,46,47,48,49,50)
C1 = (46,47,48,49,50,51,52,53,54,55,61,62,63,64,66,67,68,69,70,66,67,68,69,70,71,72,73,74,75,81,82,83,84,85,86,87,88,89,90,86,87,88,89,90,91,92,93,94,95,101,102,103,104,105,106,107,108,109,110,106,107,108,109,110,111,112,113,114,115)
print('A구간',
          sorted_arr1[69] - sorted_arr1[0] + sorted_arr1[1] + sorted_arr1[3] + sorted_arr1[5] + sorted_arr1[7] +
          sorted_arr1[9] + sorted_arr1[11] + sorted_arr1[13] + sorted_arr1[15] + sorted_arr1[17] + sorted_arr1[19] +
          sorted_arr1[21] + sorted_arr1[23] + sorted_arr1[25] + sorted_arr1[27] + sorted_arr1[29] + sorted_arr1[31] +
          sorted_arr1[33] + sorted_arr1[35] + sorted_arr1[37] + sorted_arr1[39] + sorted_arr1[41] + sorted_arr1[43] +
          sorted_arr1[45] + sorted_arr1[47] + sorted_arr1[49] + sorted_arr1[51] + sorted_arr1[53] + sorted_arr1[55] +
          sorted_arr1[57] + sorted_arr1[59] + sorted_arr1[61] + sorted_arr1[63] + sorted_arr1[65] + sorted_arr1[67] +
          sorted_arr1[69])
 print('B구간',
          sorted_arr2[19] - sorted_arr2[0] + sorted_arr2[1] + sorted_arr2[3] + sorted_arr2[5] + sorted_arr2[7] +
          sorted_arr2[9] + sorted_arr2[11] + sorted_arr2[13] + sorted_arr2[15] + sorted_arr2[17] + sorted_arr2[19])
 print('C구간',
          sorted_arr3[9] - sorted_arr3[0] + sorted_arr3[1] + sorted_arr3[3] + sorted_arr3[5] + sorted_arr3[7] +
          sorted_arr3[9])

그냥 대충 이런식인데 sorted_arr1[0t], sorted_arr1[1t], sorted_arr1[2t], sorted_arr1[3t] 이런식으로 나타내고 싶은데 sorted_arr1[10t] 이런게 그 arr데이터의 len수를 벗어나면 오류가 떠버리더라고요.. 해결방법있나요

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 단순하게 질문에 대한 답은 arr 데이터의 len수를 넘지 않으면 됩니다. 해당 코드로만은 어떤데이터에 의해서 어떤 결과를 도출하기 위해 저런 수식이 나왔는지 가늠이 되지 않습니다. ( 그냥 "대충 이런식" 의 질문이면 대충 이런식의 답변 밖에 안나옵니다. ) 김호원 2021.11.26 12:11
  • 코드가 너무 길어서 보기 불편하실까봐 .. 알 수 없는 사용자 2021.11.26 13:21
  • 질문수정했습니다. 알 수 없는 사용자 2021.11.26 13:21
  • 저 오름차순으로 정렬된 arr데이터에 1 3 5 7 9 이런식 말고 [ n*t] 를집어넣어서 2 4 6 8 혹은 5 10 15 20 이런식으로 등차수열하되 len수를 넘지 않을 방법을 구하고싶습니다... 알 수 없는 사용자 2021.11.26 13:22

2 답변

  • 질문 코드가 질문의도와 다른 코드인거 같네요.

    for loop 활용하시면 됩니다. while도 가능합니다.

    import random
    import math
    arr1,arr2,arr3 = [],[],[]
    
    A1 = (1,2,3,4,5,6,7,8,9,10,6,7,8,9,10,11,12,13,14,15)
    B1 = (21,22,23,24,25,26,27,28,29,30,26,27,28,29,30,31,32,33,34,35,41,42,43,44,45,46,47,48,49,50)
    C1 = (46,47,48,49,50,51,52,53,54,55,61,62,63,64,66,67,68,69,70,66,67,68,69,70,71,72,73,74,75,81,82,83,84,85,86,87,88,89,90,86,87,88,89,90,91,92,93,94,95,101,102,103,104,105,106,107,108,109,110,106,107,108,109,110,111,112,113,114,115)
    
    for i in range(70):
            ax = int(random.choice(A1))
            result1 = ax
            arr1.append(result1)
    for i in range(20):
            ax = int(random.choice(B1))
            result2 = ax
            arr2.append(result2)
    for i in range(10):
            ax = int(random.choice(C1))
            result3 = ax
            arr3.append(result3)
    
    arr1.sort() # 오름차순정렬
    arr2.sort() # 오름차순정렬
    arr3.sort() # 오름차순정렬
    
    def func(arr, n ,t):
        print(arr)
        for i in range(n, len(arr), t):
            print(f"arr[{i}] : {arr[i]}")
    
    func(arr1,1,3)
    [1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15]
    arr[1] : 1
    arr[4] : 2
    arr[7] : 3
    arr[10] : 4
    arr[13] : 5
    arr[16] : 5
    arr[19] : 6
    arr[22] : 6
    arr[25] : 7
    arr[28] : 7
    arr[31] : 8
    arr[34] : 8
    arr[37] : 9
    arr[40] : 9
    arr[43] : 9
    arr[46] : 9
    arr[49] : 10
    arr[52] : 10
    arr[55] : 11
    arr[58] : 11
    arr[61] : 13
    arr[64] : 14
    arr[67] : 15
    
    • 혹시 저 arr[1] arr[4] arr[7] 이런 값들간의 더하기 빼기 연산을 할수 있을까요? 알 수 없는 사용자 2021.11.26 13:52
    • 그건 님이 코딩하기 나름이죠 김호원 2021.11.26 15:49
  • 아주 기본적인 스텝이 들어 있는 슬라이싱

    arr[::2]
    arr[::3]
    arr[::4]
    
    arr[1::2]
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)