본문 바로가기
휴지통/알고리즘 & 자료구조

백준 21314

by 신재권 2023. 7. 23.
import java.io.BufferedReader;
import java.io.InputStreamReader;

class Main21314 {

   public static void main(String[] args) throws Exception {
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      String s = br.readLine();

      //최대값 - 붙어 있는 M을 최대한 합치고, K로 5의 단위로 변환
      //최소값 - 붙어 있는 M을 최대한 합침, K는 개별적으로

      System.out.println(getMax(s));
      System.out.println(getMin(s));
   }

   private static String getMin(String s) {
      StringBuilder sb = new StringBuilder();
      int count = 0;
      boolean state = false;

      for (int i = 0; i < s.length(); i++) {
         char c = s.charAt(i);

         if (!state && c == 'K') {
            sb.append(5);
            continue;
         }

         if (c == 'M') { //M의 갯수를 최대한 세준다.
            count++;
            state = true;
         } 
         else if (state && c == 'K') { //M이 등장한 상태에서 K가 등장하면
            sb.append(1).append("0".repeat(count - 1)).append(5);
            state = false;
            count = 0;
         }
      }

      if (count != 0) {
         sb.append(1).append("0".repeat(count - 1));
      }

      return sb.toString();
   }

   private static String getMax(String s) {
      StringBuilder sb = new StringBuilder();
      int count = 0;
      boolean state = false;

      for (int i = 0; i < s.length(); i++) {
         char c = s.charAt(i);
         
         if (!state && c == 'K') { //K가 단독으로 나왔을 때
            sb.append(5);
            continue;
         }

         if (c == 'M') {
            count++;
            state = true;
         } 
         else if (state && c == 'K') { //M이 있는 상태에서 K가 나왔을 때 
            sb.append(5).append("0".repeat(count));
            state = false;
            count = 0;
         }
         
      }

      //남은 M이 있을 때
      if (count != 0) {
         sb.append("1".repeat(count));
      }

      return sb.toString();
   }

}

'휴지통 > 알고리즘 & 자료구조' 카테고리의 다른 글

백준 1080  (0) 2023.07.24
백준 11501  (0) 2023.07.24
백준 16953  (0) 2023.07.20
백준 20365  (0) 2023.07.19
백준 1541  (0) 2023.07.19