기초 트레이닝 DAY5~6 (Python, js)

이다형·2023년 10월 25일
0

코드 처리하기

python

def solution(code):
    mode = False
    answer = []
    for i in range(len(code)):
        if code[i] == "1":
            mode = not mode
            continue
            
        if not mode and i%2 == 0:
                answer.append(code[i])
        elif mode and i%2 == 1:
                answer.append(code[i])
        
    if not answer:
        return "EMPTY"
    
    return "".join(answer)

js


등차수열의 특정한 항만 더하기

두 정수 a, d와 길이가 n인 boolean 배열 included가 주어집니다. 첫째항이 a, 공차가 d인 등차수열에서 included[i]가 i + 1항을 의미할 때, 이 등차수열의 1항부터 n항까지 included가 true인 항들만 더한 값을 return 하는 solution 함수를 작성해 주세요.

python

def solution(a, d, included):
    result = 0;
    
    for idx, i in enumerate(included):
        if i: 
            result += (a+(d*idx))
        
    return result
        
        

js


주사위게임 2

1부터 6까지 숫자가 적힌 주사위가 세 개 있습니다. 세 주사위를 굴렸을 때 나온 숫자를 각각 a, b, c라고 했을 때 얻는 점수는 다음과 같습니다.
- 세 숫자가 모두 다르다면 a + b + c 점을 얻습니다.
- 세 숫자 중 어느 두 숫자는 같고 나머지 다른 숫자는 다르다면 (a + b + c) × (a2 + b2 + c2 )점을 얻습니다.
- 세 숫자가 모두 같다면 (a + b + c) × (a2 + b2 + c2 ) × (a3 + b3 + c3 )점을 얻습니다.
세 정수 a, b, c가 매개변수로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.

python

def solution(a, b, c):
    if a != b and a != c and b != c :
        return a+b+c
    elif a == b and a == c and b == c :
        return (a + b + c) * (a**2 + b**2 + c**2) * (a**3 + b**3 + c**3)
    else :
        return (a + b + c) * (a**2 + b**2 + c**2)

js


원소들의 곱과 합

정수가 담긴 리스트 num_list가 주어질 때, 모든 원소들의 곱이 모든 원소들의 합의 제곱보다 작으면 1을 크면 0을 return하도록 solution 함수를 완성해주세요.

python

def solution(num_list):
    mul = 1
    for i in num_list:
        mul*= i
        
    return 1 if mul < sum(num_list)**2 else 0

js

function solution(num_list) {
    let a = num_list.reduce((a,b)=> a+b,0);
    let b = num_list.reduce((a,b)=> a*b,1);
    return b > a*a ? 0 : 1;
}

이어 붙인 수

정수가 담긴 리스트 num_list가 주어집니다. num_list의 홀수만 순서대로 이어 붙인 수와 짝수만 순서대로 이어 붙인 수의 합을 return하도록 solution 함수를 완성해주세요.

python

def solution(num_list):
    odd = ""
    even = ""
    for i in num_list:
        if i % 2 == 1 :
            odd += str(i)
        else :
            even += str(i)
            
    return int(odd) + int(even)

js


마지막 두 원소

정수 리스트 num_list가 주어질 때, 마지막 원소가 그전 원소보다 크면 마지막 원소에서 그전 원소를 뺀 값을 마지막 원소가 그전 원소보다 크지 않다면 마지막 원소를 두 배한 값을 추가하여 return하도록 solution 함수를 완성해주세요.

python

def solution(num_list):
    last = num_list[-1]
    last2 = num_list[-2]
    
    num_list.append((last - last2) if last2 < last else (last*2))
    
    return num_list

js


수 조작하기 1

정수 n과 문자열 control이 주어집니다. control은 "w", "a", "s", "d"의 4개의 문자로 이루어져 있으며, control의 앞에서부터 순서대로 문자에 따라 n의 값을 바꿉니다.

  • "w" : n이 1 커집니다.
  • "s" : n이 1 작아집니다.
  • "d" : n이 10 커집니다.
  • "a" : n이 10 작아집니다.

    위 규칙에 따라 n을 바꿨을 때 가장 마지막에 나오는 n의 값을 return 하는 solution 함수를 완성해 주세요.

python

 def solution(n, control):
    for i in control :
        if i == "w" :
            n += 1
        elif i == "s" :
            n -= 1
        elif i == "d" :
            n += 10
        elif i == "a" :
            n -= 10
            
    return n;

다른풀이

def solution(n, control):
    key = dict(zip(['w','s','d','a'], [1,-1,10,-10]))
    return n + sum([key[i] for i in control])

js


수 조작하기 2

정수 배열 numLog가 주어집니다. 처음에 numLog[0]에서 부터 시작해 "w", "a", "s", "d"로 이루어진 문자열을 입력으로 받아 순서대로 다음과 같은 조작을 했다고 합시다.

  • "w" : 수에 1을 더한다.
  • "s" : 수에 1을 뺀다.
  • "d" : 수에 10을 더한다.
  • "a" : 수에 10을 뺀다.

그리고 매번 조작을 할 때마다 결괏값을 기록한 정수 배열이 numLog입니다. 즉, numLog[i]는 numLog[0]로부터 총 i번의 조작을 가한 결과가 저장되어 있습니다.

주어진 정수 배열 numLog에 대해 조작을 위해 입력받은 문자열을 return 하는 solution 함수를 완성해 주세요.

python

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

js


수열과 구간 쿼리 3

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

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

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

python

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

js


수열과 구간 쿼리 2

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

각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 k보다 크면서 가장 작은 arr[i]를 찾습니다.

각 쿼리의 순서에 맞게 답을 저장한 배열을 반환하는 solution 함수를 완성해 주세요.
단, 특정 쿼리의 답이 존재하지 않으면 -1을 저장합니다.

python

def solution(arr, queries):
    answer = []   
    for s, e, k in queries:
        result = [i for i in arr[s:e+1] if i > k]
        answer.append(min(result) if result else -1)
        
    return answer          

js


0개의 댓글