티스토리 뷰
푼 문제들
마지막 두 원소
문제
정답
def solution(l):
l.append(l[-1]-l[-2] if l[-1]>l[-2] else l[-1]*2)
return l
l[-n] < 끝에서 부터 n번째의 원소에 해당한다.
append()함수로 배열에 값을 더해줄 수 있다.
수 조작하기
문제
정답
def solution(n, control):
c = {'w':1,'s':-1,'d':10,'a':-10}
for i in control:
n+=c[i]
return n
if~elif문을 이용해서 구현할 수도 있지만
딕셔너리를 이용해 간결한 코드로 구현할 수 있다.
수 조작하기 2
문제
정답
def solution(numLog):
c = {1: "w", -1: "s", 10: "d", -10: "a"}
pre = numLog[0]
res = ""
for i in numLog[1:]:
n = i - pre
pre = i
res += c[n]
return res
파이썬의 딕셔너리는 정수를 키로 설정할 수 있다.
조작 결과를 출력하려면 연속된 숫자 간의 차이를 구한 다음,
이 차이를 바탕으로 딕셔너리 c를 이용해
문자열 res를 구성한 뒤 반환해야한다..
이전 요소의 값에 해당하는 pre함수를 배열의 첫번째 값으로 시작하고
배열의 두번째 값부터 for문을 돌린 뒤 두 값의 차이를 pre에 저장해줌으로써
배열 내에서 연속된 숫자 간의 차이를 구할 수 있다.
수열과 구간 쿼리 3
문제
정답
def solution(arr, q):
for i in q:
arr[i[0]], arr[i[1]] = arr[i[1]], arr[i[0]]
return arr
arr[n], arr[m] = arr[m], arr[n] < 두 배열 요소의 위치 바꾸기
수열과 구간 쿼리 2
문제
정답
def solution(arr, queries):
res = []
for q in queries:
s, e, k = q
n = [i for i in arr[s : e + 1] if i > k]
res.append(min(n) if n else -1)
return res
주요 고려사항은 쿼리에 대해 주어진 범위 s ~ e 내에서 k보다 큰 요소 중
가장 작은 값을 효율적으로 찾는 것이다.
이를 위해 각 쿼리를 처리하면서 주어진 범위의 요소를 검사하고
조건에 맞는 값을 찾는 방식으로 구현할 수 있다
a, b, c = [1, 2, 3]
print(a, b, c) # 1 2 3
변수들을 배열로 초기화한다면 각각의 변수는 배열의 요소로 초기화가 된다.
이를 이용해 queries의 요소를 각각의 변수에 할당한다.
n = [i for i in arr[s : e + 1] if x > k]
리스트 컴프리헨션을 통해 조건에 맞는 값들을 배열에 추가해준다.
s이상 e이하의 값들 중에서 k보다 큰 값이 n배열에 들어간다.
res.append(min(n) if n else -1)
조건에 맞는 값이 존재한다면 n배열에서 가장 작은 값을
없다면 -1을 res배열에 추가해주고 res를 리턴한다.
'프로그래머스 > 파이썬' 카테고리의 다른 글
[파이썬] Day 8 조건문, 문자 (1) | 2024.06.03 |
---|---|
[파이썬] Day 7 반복문 (0) | 2024.05.28 |
[파이썬] Day 5 조건문 (1) | 2024.05.02 |
[파이썬] Day 4 연산, 조건문 (0) | 2024.04.22 |
[파이썬] Day 3 연산 (0) | 2024.04.22 |