CS/Algorism

99클럽 코테 스터디 8일차 TIL: [LeetCode] 899. Orderly Queue

olsohee 2024. 5. 27. 21:36

https://leetcode.com/problems/orderly-queue/description/

 

어렵게 구현하다가 틀렸는데 답을 보니 굉장히 간단한 문제였다. 

  • k가 2이상인 경우, 문자들을 사전순으로 정렬한 것이 답이 된다.
  • 반면 k가 1이면, 문자열의 길이만큼 맨 앞 글자를 맨 뒤로 옮기는 작업을 진행한 후에, 가장 사전순으로 빠른 문자열을 반환하면 된다.

알고리즘을 떠올리기 전에 문제를 읽고 무작정 예를 들어가며 이해해보자. 그러면 문제 이해를 통한 해결책이 떠오를 거다..!

class Solution {

  public String orderlyQueue(String s, int k) {
    if (k >= 2) {
      char[] charArr = s.toCharArray();
      Arrays.sort(charArr);
      return new String(charArr);
    } 
    
    String result = s;
    // 문자열의 길이만큼 수행
    for (int i = 1; i < s.length(); i++) {
      String str = s.substring(i) + s.substring(0, i);
      if (result.compareTo(str) > 0) { // compareTo 결과 값이 양수이면 str이 result보다 사전순으로 앞선 것임
        result = str;
      }
    return result;
  }
}