Chef.Yeon
Code Cook
Chef.Yeon
전체 방문자
오늘
어제
  • 분류 전체보기 (230)
    • 게임 개발 (1)
      • Unity (1)
    • Android (27)
      • Kotlin (19)
      • 우아한테크코스 5기 (4)
    • Language (11)
      • 파이썬 (3)
      • Java (7)
    • DB (2)
      • SQL (16)
    • Spring (25)
    • 코딩테스트 (56)
    • Git (1)
    • TIL (85)
    • DevOps (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • til
  • MariaDB
  • 코틀린 인 액션
  • java
  • webflux
  • 안드로이드
  • 코딩테스트
  • 백준
  • Wil
  • enum
  • 코틀린
  • 파이썬
  • 문자열
  • SQL
  • 레포지토리
  • rsocket
  • Docker
  • 우아한테크코스
  • 내림차순
  • grafana
  • 다이나믹 프로그래밍
  • ec2
  • 프리코스
  • spring
  • elasticsearch
  • 프로그래머스
  • Android
  • kotlin
  • kibana
  • 에라토스테네스의 체

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Chef.Yeon

Code Cook

코딩테스트

[프로그래머스/파이썬] K번째 수

2022. 10. 2. 23:10

문제 설명

배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다.

예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면

array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다.
1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다.
2에서 나온 배열의 3번째 숫자는 5입니다.
배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요.


제한 조건

  • array의 길이는 1 이상 100 이하입니다.
  • array의 각 원소는 1 이상 100 이하입니다.
  • commands의 길이는 1 이상 50 이하입니다.
  • commands의 각 원소는 길이가 3입니다.

입출력 예

array commands return
[1,5,2,6,3,7,4] [[2,5,3], [4,4,1], [1,7,3]] [5,6,3]

내 풀이

다음과 같이 for i, j, k 를 작성함으로써 ex) i=2, j=5, k=3 에 접근할 수 있다.

i=2, j=5 라면 2번째부터 5번째까지 자른다.

인덱스는 0부터 시작하므로 인덱스 1부터 자르게 된다.

따라서 i-1 부터 j 까지 배열을 자른다.

def solution(array, commands):
    a = []
    for i,j,k in commands:
        ls = array[i-1:j]
        ls.sort()
        a.append(ls[k-1])
    return a

다른 사람 풀이1

람다와 map에 대해 아직 깊이 공부하지 못했다.

공부가 필요할 것 같다..

def solution(array, commands):
    return list(map(lambda x:sorted(array[x[0]-1:x[1]])[x[2]-1], commands))

 

다른 사람 풀이2

i, j, k를 command의 인덱스에 접근하지 않아도 '내 풀이'와 같이 바로 접근이 가능하다.

def solution(array, commands):
    result = []
    for command in commands:
        i, j, k = command[0], command[1], command[2]
        subarray = sorted(array[i-1:j])
        result.append(subarray[k-1])
    return result

 

728x90

'코딩테스트' 카테고리의 다른 글

[프로그래머스/파이썬] 두 개 뽑아서 더하기  (0) 2022.10.02
[프로그래머스/파이썬] 숫자 문자열과 영단어  (0) 2022.10.02
[프로그래머스/파이썬] 문자열 내 마음대로 정렬하기  (0) 2022.10.01
[프로그래머스/파이썬] [1차]비밀지도  (0) 2022.09.30
[프로그래머스/파이썬] 시저 암호  (0) 2022.09.29
    '코딩테스트' 카테고리의 다른 글
    • [프로그래머스/파이썬] 두 개 뽑아서 더하기
    • [프로그래머스/파이썬] 숫자 문자열과 영단어
    • [프로그래머스/파이썬] 문자열 내 마음대로 정렬하기
    • [프로그래머스/파이썬] [1차]비밀지도
    Chef.Yeon
    Chef.Yeon
    보기 좋고 깔끔한 코드를 요리하기 위해 노력하고 있습니다.

    티스토리툴바