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;
}
}
'CS > Algorism' 카테고리의 다른 글
99클럽 코테 스터디 10일차 TIL: [프로그래머스] 전력망을 둘로 나누기 (0) | 2024.05.29 |
---|---|
99클럽 코테 스터디 9일차 TIL: [프로그래머스] 모음사전 (0) | 2024.05.28 |
99클럽 코테 스터디 7일차 TIL: [LeetCode] 2551. Put Marbles in Bags (0) | 2024.05.26 |
99클럽 코테 스터디 6일차 TIL: [프로그래머스] 이중우선순위큐 (0) | 2024.05.25 |
99클럽 코테 스터디 5일차 TIL: [프로그래머스] 디스크 컨트롤러 (0) | 2024.05.24 |