티스토리 뷰

푼 문제들

 

 

 

마지막 두 원소

 

문제

 

정답

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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함