Leetcode Java Find the Lexicographically Largest String From the Box I

업데이트:

문제

Link

코드

class Solution {

  public String answerString(String word, int numFriends) {
    if (numFriends == 1) {
      return word;
    } else {
      int length = word.length();
      int size = length - numFriends + 1;
      String result = "";
      String curr;
      for (int i = 0; i < length; i++) {
        curr = word.substring(i, Math.min(size + i, length));
        if (result.compareTo(curr) < 0) {
          result = curr;
        }
      }
      return result;
    }
  }

}

결과

Link

설명

  1. word를 재귀적으로 중복된 위치의 문제를 배제하고 numFriends 개의 비어있지 않은 문자열로 분할할 때, 분할된 문자열 중 사전적으로 가장 큰 문자열을 찾는 문제이다.

  2. numFriends가 1인 하나의 문자열로 분할하는 경우, 가능한 유일한 문자열인 word를 주어진 문제의 결과로 반환한다.

  3. 문제 풀이에 필요한 변수를 정의한다.
    • length는 word의 길이를 저장한 변수이다.
    • size는 분할할 문자열의 가능한 길이를 저장할 변수로, $length - numFriends + 1$로 초기화한다.
    • result는 결과를 저장할 변수이고, curr은 현재 문자열을 저장할 변수이다.
  4. 0부터 length 미만까지 i를 증가시키며 아래를 반복한다.
    • curr에 word의 i번째 위치부터 $size + 1$과 length 중 작은 값 위치 미만까지 문자열을 잘라 넣어준다.
    • curr이 result보다 사전적으로 큰 문자열인 경우, result에 curr을 넣어준다.
  5. 반복이 완료되면 조건을 만족하는 사전적으로 가장 큰 문자열이 저장된 result를 주어진 문제의 결과로 반환한다.

소스

Sample Code는 여기에서 확인 가능합니다.

댓글남기기