[프로그래머스] LV0. 마지막 두 원소

윤인경·2023년 8월 6일
0

코딩테스트

목록 보기
28/38
post-thumbnail

문제 설명

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

제한사항

  • 2 ≤ num_list의 길이 ≤ 10
  • 1 ≤ num_list의 원소 ≤ 9

입출력 예

num_listresult
[2, 1, 6][2, 1, 6, 5]
[5, 2, 1, 7, 5][5, 2, 1, 7, 5, 10]

입출력 예 설명
입출력 예 #1

  • 마지막 원소인 6이 그전 원소인 1보다 크기 때문에 6 - 1인 5를 추가해 return합니다.

입출력 예 #2

  • 마지막 원소인 5가 그전 원소인 7보다 크지 않기 때문에 5의 두 배인 10을 추가해 return합니다.

내가 작성한 코드

def solution(num_list):
    if  num_list[len(num_list)-1] > num_list[len(num_list) - 2]:
        num_list.append(num_list[len(num_list)-1] - num_list[len(num_list)-2])
    else:
        num_list.append(num_list[len(num_list)-1]*2)
    return num_list

코드 간단 소개

  • 맨 마지막 값과 마지막에서 두번째 값을 비교한다. len(num_list)-1 식으로 인덱싱한다.
  • 비교했을 때 맨 마지막 값이 크면 .append()를 활용해 마지막값에서 마지막에서 두번째 값을 뺀 것을 추가한다.
  • 마지막값이 작으면 마지막 값에 곱하기 2를 하여 .append()로 추가한다.

    인덱싱을 할때 len(num_list) -1로 했는데 -1로 인덱싱을 해도 동일한 결과가 나온다.

다른 사람 풀이

def solution(l):
    l.append(l[-1]-l[-2] if l[-1]>l[-2] else l[-1]*2)
    return l
  • append()안에 들어있는 내용을 먼저 확인해보자
    l[-1]-l[-2]을 if l[-1]이 l[-2]보다 크면 넣고, 아니면 l[-1]*2를 넣는다.
    인덱싱에서 -1은 맨 마지막 값, -2는 뒤에서 그다음값으로 뒤에서 부터 인덱싱하는데 사용한다.
  • l.append()로 l리스트의 맨 마지막에 추가한다.
profile
코딩 공부 및 프로젝트 정리

0개의 댓글