본문 바로가기

Python

[Python] Lv.0 코딩 기초 트레이닝 - 마지막 두 원소, 수 조작하기 1, 수 조작하기 2, 수열과 구간 쿼리 2, 수열과 구간 쿼리 3

1. 마지막 두 원소

  • answer = num_list[:] 리스트 복사
  • append(): 리스트이름.append(데이터값)을 쓰면 리스트에 값이 추가
def solution(num_list):
    answer = num_list[:]
    if num_list[-1] > num_list[-2]:
        answer.append(num_list[-1] - num_list[-2])
    else:
        answer.append(num_list[-1]*2)
    return answer

 

2. 수 조작하기 1

  • answer = n: 규칙에 따라 변경된 n의 최종값이 answer
  • for i in control: 문자열 길이만큼 for문 반복 & control에 i에 해당하는 문자가 있으면 TRUE 없으면 FALSE
def solution(n, control):
    answer = n
    for i in control:
        if i == "w":
            answer += 1
        elif i == "s":
            answer -= 1
        elif i == "d":
            answer += 10
        elif i == "a":
            answer -= 10
    return answer

 

3. 수 조작하기 2

  • numLog의 첫 번째 값 인덱스 0이기 때문에, 그 다음 인덱스인 1부터 for문 돌리기
  • 입출력 예
    • numLog: [0, 1, 0, 10, 0, 1, 0, 10, 0, -1, -2, -1]
    • result: "wsdawsdassw"
    • numLog[i] - numLog[i-1] == 1
      • i = 1이라면
      • numLog[1] - numLog[0] = 1 - 0 = 1
      • 이는 numLog[0] = 0에서 +1이 되었다는 것이기에 'w'
    • numLog[i-1] - numLog[i] == 1
      • i = 2라면
      • numLog[1] - numLog[2] = 1 - 0 = 1
      • 이는 numLog[1] = 1에서 -1이 되었다는 것이게 's'
    • 같은 원리로 'd', 'a'
def solution(numLog):
    answer = ''
    for i in range(1, len(numLog)):
        if numLog[i] - numLog[i-1] == 1:
            answer += 'w'
        elif numLog[i-1] - numLog[i] == 1:
            answer += 's'
        elif numLog[i] - numLog[i-1] == 10:
            answer += 'd'
        elif numLog[i-1] - numLog[i] == 10:
            answer += 'a'
    return answer


4. 수열과 구간 쿼리 2

  • s <= i < = e & arr[i] > k인 arr[i] 찾기
    • for i in range(s, e+1): i는 s부터 e까지 반복
    • if arr[i] > k: arr[i]가 k보다 크면
    • candidates.append(arr[i]): candidates 리스트에 arr[i] 저장
  • 가장 작은 arr[i] 찾기
    • answer.append(min(candidates)): candidates 리스트에서 가장 작은 것을 answer 리스트에 저장
    • answer.append(-1): 특정 쿼리에 답이 존재하지 않으면 -1 저장
def solution(arr, queries):
    answer = []
    
    for s, e, k in queries:
        candidates = []
        for i in range(s, e+1):
            if arr[i] > k:
                candidates.append(arr[i])
        
        if candidates:
            answer.append(min(candidates))
        else:
            answer.append(-1)

    return answer

 

5. 수열과 구간 쿼리 3

  • arr[i], arr[j] = arr[j], arr[i]: a[i] ↔ a[j] 서로 교환
  • answer = arr: arr 리스트에 변경된 값을 answer에 저장
def solution(arr, queries):
    answer = []
    
    for i, j in queries:
        arr[i], arr[j] = arr[j], arr[i]
        answer = arr
    
    return answer

 

참고 사이트: https://programmers.co.kr/

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

반응형