ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2023.7.24.월요일. 100개
    TIL( Today I Learned) 2023. 7. 24. 22:47

     

     

    요새 머리가 아파서 어제 오늘 부진했지만 100개를 풀고나니 기쁘다. 

    낼 부터는 20개씩 ^^

    • 수열과 구간 쿼리 1 
      문제 설명

    정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. 

    queries의 원소는 각각 하나의 query를 나타내며, [s, e] 꼴입니다.

    각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 arr[i]에 1을 더합니다.

    위 규칙에 따라 queries를 처리한 이후의 arr를 return 하는 solution 함수를 완성해 주세요.

     

    제한사항

    • 1 ≤ arr의 길이 ≤ 1,000
    • 1 ≤ queries의 길이 ≤ 1,000

     

    입출력 예

    arr queries result
    [0, 1, 2, 3, 4] [[0, 1],[1, 2],[2, 3]] [1, 3, 4, 4, 4]

     

    입출력 예 설명

    입출력 예 #1

    • 각 쿼리에 따라 arr가 다음과 같이 변합니다.
    i queries[i] arr
    - - [0, 1, 2, 3, 4]
    0 [0,1] [1, 2, 2, 3, 4]
    1 [1,2] [1, 3, 3, 3, 4]
    2 [2,3] [1, 3, 4, 4, 4]

    따라서 [1, 3, 4, 4, 4]를 return 합니다.

     

     

    @@@@

     

    내 풀이 - 

    def solution(arr, queries):

        for query in queries:

            s, e = query

            for i in range(s, e + 1):

                arr[i] += 1

        return arr

     

    다른 사람 풀이

    @@@@@@

    def solution(arr, queries):

        for (s, e) in queries:

            arr = [a+1 if s <= i <= e else a for i, a in enumerate(arr)]

        return arr

     

    한지언

    • 순위
      49,568위
    • 점수
      1,198점
    • 해결한 문제
      97개

     

    • 2 빈 배열에 추가, 삭제하기// 틀린문제 // 어려워지는 거 같다

    문제 설명

    아무 원소도 들어있지 않은 빈 배열 X가 있습니다. 

    길이가 같은 정수 배열 arr과 boolean 배열 flag가 매개변수로 주어질 때, flag를 차례대로 순회하며 flag[i]가 true라면 X의 뒤에 arr[i]를 arr[i] × 2 번 추가하고, flag[i]가 false라면 X에서 마지막 arr[i]개의 원소를 제거한 뒤 X를 return 하는 solution 함수를 작성해 주세요.

     

    제한사항

    • 1 ≤ arr의 길이 = flag의 길이 ≤ 100
    • arr의 모든 원소는 1 이상 9 이하의 정수입니다.
    • 현재 X의 길이보다 더 많은 원소를 빼는 입력은 주어지지 않습니다.

     

    입출력 예

    arr flag result
    [3, 2, 4, 1, 3] [true, false, true, false, false] [3, 3, 3, 3, 4, 4, 4, 4]

     

    입출력 예 설명

     

    입출력 예 #1

    • 예제 1번에서 X의 변화를 표로 나타내면 다음과 같습니다

    따라서 [3, 3, 3, 3, 4, 4, 4, 4] return 합니다.
    flag[i] arr[i] X
    []
    0 true 3 [3, 3, 3, 3, 3, 3]
    1 false 2 [3, 3, 3, 3]
    2 true 4 [3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4]
    3 false 1 [3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4]
    4 false 3 [3, 3, 3, 3, 4, 4, 4, 4]

     

     

    내 오답

    def solution(arr, flag):

        

        x=[]

        for i,j in enumerate(arr,flag):

            if j == True:

                p =2*i

                for _ in range(p):

                    x.append(i)

            else:

                for _ in range(i):

                    x.pop()

        return x

                    

        쳇것 1

          def solution(arr, flag):

        X = []

        for i in range(len(flag)):

            if flag[i]:

                X.extend([arr[i]*2]*2)

            else:

                X = X[:-arr[i]]

        return X

    위 코드에서 X는 빈 배열로 초기화되며, flag를 순회하며 아래와 같이 처리됩니다.

     

    flag[i]가 True인 경우, X의 뒤에 arr[i]*2를 두 번 추가합니다.

    flag[i]가 False인 경우, X에서 마지막 arr[i]개의 원소를 제거합니다.

    최종적으로 처리된 X를 반환합니다.

          

       

    def solution(arr, flag):
        X = []
        for i, f in enumerate(flag):
            if f:
                X += [arr[i]] * (arr[i]*2)
            else:
                for _ in range(arr[i]):
                    X.pop()
        return X

    def solution(arr, flag):

        X = []

        for i, f in enumerate(flag):

            if f:

                X += [arr[i]] * (arr[i]*2)

            else:

                for _ in range(arr[i]):

                    X.pop()

        return X

         

            

    `solution` 함수는 입력으로 정수 배열 `arr`, 불리언 배열 `flag`를 받아서 아래와 같이 처리됩니다.

     

    - `flag[i]`가 `True`인 경우, `arr[i]`의 두 배만큼 `arr[i]`가 `X` 리스트에 추가됩니다.

    - `flag[i]`가 `False`인 경우, `X` 리스트에서 마지막 `arr[i]`개의 원소가 제거됩니다.

     

    아래는 파이썬으로 작성된 코드입니다.

     

    ```python

    def solution(arr, flag):

        X = []

        for i, f in enumerate(flag):

            if f:

                X += [arr[i]] * (arr[i]*2)

            else:

                for _ in range(arr[i]):

                    X.pop()

        return X

    ```

     

    위 코드에서 `X`는 빈 리스트로 초기화되며, `flag`를 순회하며 아래와 같이 처리됩니다.

     

    - `flag[i]`가 `True`인 경우, `arr[i]`의 두 배만큼 `arr[i]`가 `X` 리스트에 추가됩니다.

    - `flag[i]`가 `False`인 경우, `X` 리스트에서 마지막 `arr[i]`개의 원소가 제거됩니다.

     

    최종적으로 처리된 `X`를 반환합니다.

     

    X += [arr[i]] * (arr[i]*2) 의미좀 설명해줘

    `X += [arr[i]] * (arr[i]*2)`는 리스트 `X`에 `arr[i]`를 `(arr[i]*2)`번 추가하는 것을 의미합니다. 예를 들어, `arr[i]`가 3일 경우, `[3]*6`은 `[3, 3, 3, 3, 3, 3]`과 같습니다. 따라서, `X += [arr[i]] * (arr[i]*2)`는 `X` 리스트에 `[arr[i]]`가 `(arr[i]*2)`번 추가되는 것입니다.

     

    • 수열과 구간 쿼리 3
    문제 설명

    정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [i, j] 꼴입니다.

     query마다 순서대로 arr[i]의 값과 arr[j]의 값을 서로 바꿉니다.

    위 규칙에 따라 queries를 처리한 이후의 arr를 return 하는 solution 함수를 완성해 주세요.


    제한사항
    • 1 ≤ arr의 길이 ≤ 1,000
      • 0 ≤ arr의 원소 ≤ 1,000,000
    • 1 ≤ queries의 길이 ≤ 1,000
      • 0 ≤ i < j < arr의 길이

    입출력 예

    arr                                                            queries                                                                        result

     

    [0, 1, 2, 3, 4] [[0, 3],[1, 2],[1, 4]] [3, 4, 1, 0, 2]

    내 오답

     

    def solution(arr, queries):
        
        for query in queries:
            s,e = query
            for s,e in query:
                arr[s],arr[e]=arr[e],arr[s]
        
           return  arr

     

    쳇 것

    def solution(arr, queries):
        for query in queries:
            s, e = query
            arr[s], arr[e] = arr[e], arr[s]
        return arr

     

    • 세로 읽기
    문제 설명

    문자열 my_string과 두 정수 m, c가 주어집니다. my_string을 한 줄에 m 글자씩 가로로 적었을 때 왼쪽부터 세로로 c번째 열에 적힌 글자들을 문자열로 return 하는 solution 함수를 작성해 주세요.


    제한사항
    • my_string은 영소문자로 이루어져 있습니다.
    • 1 ≤ m  my_string의 길이 ≤ 1,000
    • m은 my_string 길이의 약수로만 주어집니다.
    • 1 ≤ c  m

     

    입출력 예
     
    my_string                                                                                        m               c                                         result
    "ihrhbakrfpndopljhygc" 4 2 "happy"
    "programmers" 1 1 "programmers"

     

    내 오답

    def solution(my_string, m, c):
        new_string=''
        mls = list(my_string)
        mls1=[]
        for i,letter in enumerate(mls):
            pm= (i+1)%m 
            if c ==pm:
                mls1.append(mls[i])
            else:
                pass
        new_string =''.join(mls1)

    return  new_string

     

    남 답  예술이네 

    def solution(my_string, m, c):
        answer = ''
        for i in range(c-1, len(my_string), m):
            answer += my_string[i]
        return answer
     

     

    'TIL( Today I Learned)' 카테고리의 다른 글

    2023.7.26.수요일  (0) 2023.07.26
    2023.7.25.화요일  (0) 2023.07.25
    2023.7.23.일요일 D-8, "Forward, 8 days left" 96 to ?  (0) 2023.07.23
    2023.7.22.토요일  (0) 2023.07.22
    2023.7.21.금요일  (0) 2023.07.21
Designed by Tistory.