[Algorithm] K번째수

2024. 12. 30. 09:51·Algorithm/Practice

문제 설명

배열 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 함수를 작성해주세요.

 

문제 유형

  • 벡터 슬라이싱
  • 정렬

 

의사코드

  1. 결과값을 저장할 변수(answer)를 선언한다.
  2. [반복문] commands의 크기만큼 반복한다.
    1. 분할 기준인 시작 인덱스, 마지막 인덱스와 추출할 인덱스를 변수에 저장한다.
    2. 벡터를 슬라이싱 한다.
    3. 슬라이싱된 벡터를 정렬한다.
    4. answer에 정렬된 벡터의 추출할 인덱스에 해당하는 요소를 저장한다.
  3. 결과값(answer)를 반환한다.

 

코드 작성

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

vector<int> solution(vector<int> array, vector<vector<int>> commands) {
    vector<int> answer;
    
    for (vector<int>& command : commands)
    {
        int startIdx = command[0];
        int endIdx = command[1];
        int nIdx = command[2];
        
        vector<int> sliceV(array.begin() + startIdx - 1, array.begin() + endIdx);
        sort(sliceV.begin(), sliceV.end());
        answer.push_back(sliceV[nIdx - 1]);
    }
    
    return answer;
}

 

배운 점
  • Vector 자체에는 Slice 함수를 제공하지 않는다.
  • Vector Slice를 구현할 수 있다.

'Algorithm > Practice' 카테고리의 다른 글

[Algorithm] 가장 가까운 같은 글  (0) 2024.12.31
[Algorithm] 두 개 뽑아서 더하기  (1) 2024.12.31
[Algorithm] 문자열 내 마음대로 정렬하기  (0) 2024.12.30
[Algorithm] 시저 암호  (1) 2024.12.27
[Algorithm] 최소직사각형  (0) 2024.12.27
'Algorithm/Practice' 카테고리의 다른 글
  • [Algorithm] 가장 가까운 같은 글
  • [Algorithm] 두 개 뽑아서 더하기
  • [Algorithm] 문자열 내 마음대로 정렬하기
  • [Algorithm] 시저 암호
DevColIn
DevColIn
복잡함을 단순하게
  • DevColIn
    심플한 코딩생활
    복잡함을 단순하게
  • 전체
    오늘
    어제
    • 전체보기 (223)
      • Unreal 부트캠프 (49)
        • TIL (34)
        • 사전캠프 (7)
        • 본캠프 (8)
      • Unrael (10)
        • 환경설정 (0)
        • Basic (19)
        • Component (5)
        • GAS (GameplayAbilitySystem) (3)
        • AI (2)
        • Implement (10)
        • UI (1)
        • Error (1)
        • Network (2)
        • Tip (1)
      • Level Design (5)
      • Math (1)
      • Design Pattern (16)
      • Computer Science (2)
        • Network (1)
        • Database (1)
      • Algorithm (79)
        • Basic (4)
        • Practice (74)
      • C++ (4)
        • Basic (4)
      • Tool (0)
      • Game (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    디자인패턴
    unrealengine
    Animation
    AI
    게임동기화
    unreal
    actor
    소프트 레퍼런신
    assetmanager
    component
    퀘스트
    Til
    레벨디자인
    Algorithm
    액터
    Design Pattern
    디자인 패턴
    사전캠프
    gas
    DesignPattern
    tsoftobjectptr
    GameplayEffect
    본캠프
    c++
    KPT회고
    내일배움캠프
    basic
    Implement
    알고리즘
    하드 레퍼런싱
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
DevColIn
[Algorithm] K번째수
상단으로

티스토리툴바