KimMinJun
Coding Note
KimMinJun
전체 방문자
오늘
어제
  • 분류 전체보기 (499) N
    • ALGORITHM (11)
      • 정렬 (6)
      • 최단경로 (1)
      • 자료구조 (1)
      • 슬라이딩 윈도우 (1)
      • etc (2)
    • Git (5)
    • Web (24)
      • Vanilla JS (13)
      • TS (2)
      • React (7)
      • ETC (1)
    • React 공식문서 (번역, 공부) (11)
      • Quick Start (2)
      • Installation (0)
      • Describing the UI (9)
      • Adding Interactivity (0)
      • Managing State (0)
      • Escape Hatches (0)
    • Next.js 공식문서 (번역, 공부) (3)
      • Getting Started (2)
      • Building Your Application (1)
    • PS (432)
      • 백준 (187)
      • Programmers (105)
      • CodeUp (21)
      • STL (3)
      • 제코베 JS 100제 (50)
      • SWEA (0)
      • LeetCode (65)
    • IT (1)
    • Docker (11) N
    • CS (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 관리

공지사항

인기 글

태그

  • C++
  • Level 2
  • string
  • codeup
  • 수학
  • programmers
  • 문자열
  • LeetCode
  • 그래프
  • tree
  • js
  • 제코베 JS 100제
  • Level1
  • C
  • Level 1
  • 정렬
  • Level 0
  • recursion
  • 백준
  • 다이나믹 프로그래밍

최근 댓글

최근 글

hELLO · Designed By 정상우.
KimMinJun

Coding Note

PS/Programmers

Programmers / Level 1 / K번째수 / C++

2021. 10. 27. 22:32

문제 설명

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

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

  1. array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다.
  2. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다.
  3. 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]

입출력 예 설명

[1, 5, 2, 6, 3, 7, 4]를 2번째부터 5번째까지 자른 후 정렬합니다. [2, 3, 5, 6]의 세 번째 숫자는 5입니다.
[1, 5, 2, 6, 3, 7, 4]를 4번째부터 4번째까지 자른 후 정렬합니다. [6]의 첫 번째 숫자는 6입니다.
[1, 5, 2, 6, 3, 7, 4]를 1번째부터 7번째까지 자릅니다. [1, 2, 3, 4, 5, 6, 7]의 세 번째 숫자는 3입니다.

출처

 

Northern Eurasia Contests

 

neerc.ifmo.ru

 

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

using namespace std;

vector<int> solution(vector<int> array, vector<vector<int>> commands) {
    vector<int> answer;
    
    for(vector v : commands) {
        int start, end, nth;
        vector<int> tmp;
        for(int i=0; i<v.size(); i++) {
            start = v[0] - 1;
            end = v[1] - 1;
            nth = v[2] - 1;
        }
        
        for(int i=start; i<=end; i++) {
            tmp.push_back(array[i]);
        }
        
        sort(tmp.begin(), tmp.end());
        answer.push_back(tmp[nth]);
    }
    
    return answer;
}

commands가 2중 벡터로 인자에 들어온다.

따라서 일단 반복문으로 commands안에 하나하나의 벡터(command 하나)에 접근해준다.

 

start, end, nth 변수는 각각 시작, 끝, 몇번째인지를 나타내는 변수이다.

한 command에는 start, end, nth가 순서대로 있는데, 배열의 시작은 0부터 시작이므로 각각 1을 빼준다.

 

그리고 구한 start와 end를 이용해 주어진 array 배열에서 start부터 end까지 tmp라는 벡터에 push해준다.

그리고 tmp를 sort해주고, 구한 nth를 통해 tmp의 nth번째 요소를 answer에 push해준다.

 

이런 방식으로 반복해서 answer을 구해주면된다.

저작자표시 (새창열림)

'PS > Programmers' 카테고리의 다른 글

Programmers / Level 1 / 체육복 / C++  (0) 2021.10.30
Programmers / Level 1 / 모의고사 / C++  (0) 2021.10.28
Programmers / Level 1 / 완주하지 못한 선수 / C++  (0) 2021.10.26
Programmers / Level1 / 소수 만들기 / C++ / JS  (1) 2021.10.26
    'PS/Programmers' 카테고리의 다른 글
    • Programmers / Level 1 / 체육복 / C++
    • Programmers / Level 1 / 모의고사 / C++
    • Programmers / Level 1 / 완주하지 못한 선수 / C++
    • Programmers / Level1 / 소수 만들기 / C++ / JS
    KimMinJun
    KimMinJun

    티스토리툴바