Fullstacknology 2023. 5. 16. 04:41

인접한 원소들의 차이를 확인 한 수 조작

def solution(numLog):
    answer = []
    for i in range(1, len(numLog)):
        minus = numLog[i] - numLog[i - 1]
        if minus == 1:
            answer.append("w")
        elif minus == -1:
            answer.append("s")
        elif minus == 10:
            answer.append("d")
        elif minus == -10:
            answer.append("a")
    return "".join(answer)

 

 

리스트의 값을 다른 리스트의 값으로 대체

arr[0, 1, 2, 3, 4]
queries[[0, 3],[1, 2],[1, 4]]
결과 [3, 4, 1, 0, 2]

def solution(arr, queries):
    for i in queries:
        arr[i[0]], arr[i[1]] = arr[i[1]], arr[i[0]]
    return arr

 

 

수열구간쿼리

"""
입출력 예

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

queries
[[0, 4, 2],[0, 3, 2],[0, 2, 2]]

result
[3, 4, -1]
"""

def solution(arr, queries):
    answer = []
    for i in range(0, len(queries)):
        index = queries[i]
        start, end, compare = index[0], index[1], index[2]
        result = arr[start : end + 1]
        result.sort()
        mini = -1
        for b in result:
            if b > compare:
                mini = b
                break
        answer.append(mini)
    return answer
    
    
    
 # 다른 방법 
 
 def solution(arr, queries):
    answer = []
    for s, e, k in queries:
        tmp = []
        for x in arr[s:e+1]:
            if x > k:
                tmp.append(x)
        answer.append(-1 if not tmp else min(tmp))
    return answer

 

 

수열과 구간 뭐리 (배수에 해당하면  + 1)

각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 i가 k의 배수이면 arr[i]에 1을 더한다.

입출력 예
arr	queries	result
[0, 1, 2, 4, 3]	[[0, 4, 1],[0, 3, 2],[0, 3, 3]]	[3, 2, 4, 6, 4]


def solution(arr, queries):
    for i in queries:
        start, end, k = i
        for j in range(start, end + 1):
            if j % k == 0:
                arr[j] += 1
    return arr

 

 

all() 함수를 사용하여 iterable(반복가능한) 객체의 요소가 모두 참인지 거짓인지 판별하기

0와 5만 들어간 숫자 출력


l	r	result
5	555	[5, 50, 55, 500, 505, 550, 555]
10	20	[-1]



def solution(l, r):
    result = []
    
    for num in range(l, r+1):
        if all(digit in ('0', '5') for digit in str(num)):
            result.append(num)
    
    if not result:
        result = [-1]
    
    return result

 

 

재귀함수를 이용하여 특정 숫자만을 반환하도록 하는 경우(바로 위의 문제와 입출력 동일)

def solution(l, r):
    ret = []
    def f(lim, val):
        if lim == 0:
            ret.append(val)
            return

        f(lim - 1, val * 10 + 5)
        f(lim - 1, val * 10)

    f(6, 0)

    return list(i for i in ret if l <= i <= r)[::-1] or [-1]

 

 

카운트 업 

start = 3
end = 10


def solution(start, end):
    answer = []
    for i in range(start, end + 1):
        answer.append(i)
    return print(answer)
    
    
    
# lambda를 이용한 경우

solution = lambda start, end: [i for i in range(start, end+1)]