99클럽 코테 스터디 8일차 TIL - 899 Orderly Queue
899. Orderly Queue / c++ / Hard / 30분
문제 및 코드
#include <queue>
struct Cmp
{
bool operator()(char& a, char& b)
{
return a > b;
}
};
class Solution {
public:
string orderlyQueue(string s, int k) {
string Answer = s;
if (k == 1)
{
int count = s.length() - 1;
while (count-->0)
{
s = s.substr(1) + s[0];
if (s < Answer) Answer = s;
}
}
else
{
sort(Answer.begin(), Answer.end());
}
return Answer;
}
};
접근 방식
정렬
- 처음엔 단순 정렬인 줄 알았는데, k가 1인 경우엔 정렬할 수 없이 계속 순환할 뿐이었다.
- 그래서 Answer를 s로 초기화 해주고 k가 1인 경우와 아닌 경우로 나눈 뒤
- k가 1이면 s.size() - 1 번 만큼 (한번 더 돌면 원래 상태이므로 -1 해줌) 돌면서 맨 앞 글자를 맨 뒤로 보내준다. 그 후 Answer 보다 작다면 Answer 갱신
- k가 2 이상이면 단순히 Answer를 정렬해준다.
생각해 볼 점
- 리트코드 문제는 단순히 구현하는게 아니라 해당 문제의 본질을 찾는 것이 다른 곳들보다 더 중요하다고 느꼈다.
- 앞에서 2개 중 하나만 골라 뒤로 보낼 수 있더라도 정렬이 가능하다는 것을 다시금 깨달았다.
해시태그
#99클럽 #코딩테스트 준비 #개발자 취업 #항해99 #TIL