달달한 스토리

728x90
반응형

출처 핀트레스트

어제 반복문 과제의 마지막 문제인 "더하기 사이클"을 풀다가,

 

아무리 풀어도 시간 초과가 되어 푸는데 어려움 겪었다.

 

풀이는 다음과 같다.

 

1110

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));

        int N = Integer.parseInt(in.readLine());

        int x = N;
        //싸이클 카운 횟수
        int cnt = 0;

        while (true) {
            int q = x / 10; // 십의 자리
            int r = x % 10;

            int sum = q + r;

            x = r * 10 + sum % 10;
            cnt++;

            if(x == N) {
                break;
            }
        }

        out.write(cnt + "\n");

        out.flush();
        out.close();

        in.close();
    }
}

다른 예제를 보니 출력스트림을 사용하는 경우가 있어,

 

이게 더 빠른가 하고 사용해봤는데,

 

오히려 더 느렸다. 아직 이유는 모르겠지만,

 

입력받는 스트림만 사용해야 겠다.

 

이 문제에서 이상했던 점은 변수명이 살짝 길었다고,

 

반응형

 

시간 초과가 났다는 것인데,

 

이상하게 변수명을 줄이니 시간 초과가 나타나지 않았다.

 

변수명이 미치는 영향이 이렇게 큰 건가?.. 이 부분은 더 알아보아야겠다.

 

 11818

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {

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

        int N = Integer.parseInt(br.readLine());
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        int[] arr = new int[N];

        int cnt = 0;
        while (true) {
            arr[cnt] = Integer.parseInt(st.nextToken());

            cnt++;
            if(N == cnt) break;
        }
        int max = Arrays.stream(arr).max().getAsInt();
        int min = Arrays.stream(arr).min().getAsInt();

        System.out.print(min + " " + max);

    }
}

이 문제는 최소와 최댓값을 구할 수 있는 메서드가 있어서

 

쉽게 풀 수 있었다.

 

마찬가지로 출력 스트림으로도 시도해보고,

 

입력 스트림만 사용해서 시도해본 결과,

 

후자가 훨씬 빠른 것을 보아 앞으로 입력스트림만 써야 할 것 같다.

728x90
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading