Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 강참조
- dataasset
- 람다사용정렬
- 데이터애셋
- UELOG
- 프로그래머스
- 델리게이트
- unorder_map
- 언리얼엔진구조체
- 정렬알고리즘
- stl
- UE4 커스텀로그
- C++
- 애셋로드
- enumasByue
- 알고리즘
- map
- UML관련
- 크리티컬섹션
- 약참조
- 람다
- 자료구조
- 정렬
- 선택정렬
- 언리얼가비지컬렉터
- C++최적화
- UE_LOG
- BFS
- moreeffectiveC++
- 스마트포인터
Archives
- Today
- Total
기억을 위한 기록들
[Code Wars] Remove the minimum(C++) 본문
https://www.codewars.com/kata/563cf89eb4747c5fb100001b/cpp
해당 내용은 박물관에서 오래 된 전시품들을 제거 하려고한다. 전시품들에게 등급을 매기고 제일 낮은 등급의 전시품을 제거하려고 한다는 것이다.
작업 조건으로는 정수 배열 vector 가 주어지면 가장 작은 값을 제거한다고 한다. 빨간글로 강조하는 것은 원래의 배열을 변형하면 안된다는 점이다. 값이 같다면 가장 낮은 인덱스를 제거한다고 한다. 또 조건이 배열이 비어있다면 빈 배열을 반환하라는 것이다.
#include <vector>
#include <iostream>
using namespace std;
std::vector<unsigned int> removeSmallest(const std::vector<unsigned int>& numbers) {
//your code here
if(numbers.size()==0)
{
return numbers;
}
std::vector<unsigned int> newNumbers = numbers;
int minIndex = 0;
unsigned long Index = 0;
for(auto item:numbers)
{
if(item< numbers[minIndex])
{
minIndex = Index;
}
Index++;
}
newNumbers.erase(newNumbers.begin() + minIndex);
return newNumbers;
}
처음에는 단순하게 순회하면서 작은 데이터의 인덱스를 찾고 배열복사를 해서 복사된 배열에서 해당 인덱스를 제거하는식으로 위와 같이 진행했었다.
그런데 다른 사람들의 풀이를 보고 std::min_element 라는 함수를 알고 아래와 같이 수정하였다... 이렇게 짧아질줄이야
#include <vector>
std::vector<unsigned int> removeSmallest(const std::vector<unsigned int>& numbers) {
std::vector<unsigned int> NewNumbers = numbers;
auto minRating = std::min_element(NewNumbers.begin(), NewNumbers.end());
if (minRating != NewNumbers.end())
{
NewNumbers.erase(minRating);
}
return NewNumbers;
}
std::min_element 함수로 내가 직접적으로 해당 함수를 순환하면서 검사 할 필요도 없어졌고, iterator를 반환해줘서 바로 제거 할 수 있게 되었다
관련 글
https://hyo-ue4study.tistory.com/576
'Coding Test - cpp > Etc' 카테고리의 다른 글
[Code Wars] Replace With Alphabet Position(C++) (1) | 2023.12.20 |
---|---|
[Code Wars] Buying a car(C++) (0) | 2023.12.08 |
[프로그래머스 Lv 0] 안전지대 C++ (0) | 2023.11.28 |
[Code Wars] Sum of Digits / Digital Root (C++) (2) | 2023.11.20 |
[프로그래머스 lv 2 ] - 배달 (0) | 2021.04.26 |