21.05.24 기록

최대 1 분 소요

  • 백준 알고리즘 2908 풀이 완료

    • 내가 푼 2908 풀이 (메모리 14MB, 시간 128ms로 통과)
    import java.io.IOException;
    
    public class B2908 {
        public static void main(String[] args) {
            int[] num = new int[7];
            try {
                for(int i = 0; i < num.length; i++) {
                    int ch = System.in.read();
                    if(ch == 32) { continue; }
                    else { num[i] = ch-48; }
                }
    
                int A = num[2]*100 + num[1]*10 + num[0];
                int B = num[6]*100 + num[5]*10 + num[4];
    
                System.out.println(A > B ? A : B);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    
    • 띄어쓰기를 포함해서 7개의 입력만이 있기 때문에 7번 반복하는 for문으로 int형 배열에 값을 저장했다.
    • 공백일 때에는 num[3] 배열에 0이 그대로 있기 때문에 이 자리를 빼고 계산을 했다.
    • BufferedReader로도 풀 수 있을 것 같은데 어떻게 풀어야할지 잘 모르겠어서 다른 풀이를 찾아봤다.


  • 다른 풀이 : BufferedReaderStringBuilderreverse 사용
    (메모리 14MB, 시간 124ms로 통과)
  import java.io.BufferedReader;
  import java.io.IOException;
  import java.io.InputStreamReader;
  import java.util.StringTokenizer;

  public class B2908 {
      public static void main(String[] args) {
          BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
          try {
              StringTokenizer st = new StringTokenizer(br.readLine(), " ");

              int A = Integer.parseInt(new StringBuilder(st.nextToken()).reverse().toString());
              int B = Integer.parseInt(new StringBuilder(st.nextToken()).reverse().toString());

              System.out.println(A > B ? A : B);
          } catch (IOException e) {
              e.printStackTrace();
          }
      }
  }

  • StringBuilder의 reverse 함수는 문자열의 순서를 뒤집어준다.

카테고리:

업데이트: