-
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 Xdef 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 - 수열과 구간 쿼리 1