백준 1436번 - 영화감독 슘

처음 풀이

package AlgorithmStudy;


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class Main {
    static int N;
    static List<Integer> arr=new ArrayList<Integer>();
    public static void main(String[] args) throws IOException {
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        N=Integer.parseInt(br.readLine());
        String s;
        int index=1;
        //1억부터 약 500만까지 검사하기 --> 1만개 이상 종말의 숫자 가능
        for(int i=1; i<=5000000; i++){
            s=Integer.toString(i);
            if(s.contains("666")){
                arr.add(i);
            }
        }
       
        System.out.println(arr.get(N-1));

    }
}

주어진 입력 N번째 작은 종말의 수 까지만 반복문을 돌리기 위해서 for문이 아닌 while문으로 refactoring

Refactoring

package AlgorithmStudy;


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class Main {
    static int N;
    public static void main(String[] args) throws IOException {
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        N=Integer.parseInt(br.readLine());
        int number=666;
        int count=1;
        while(count!=N){
            number++;
            if(Integer.toString(number).contains("666")){
                count++;
            }
        }

        System.out.println(number);

    }
}


결과 : 메모리와 시간 모두 상당히 줄어들었다

결론 : 반복 횟수를 알고 있을 때는 for문, 모를 때는 while문 사용

좋은 웹페이지 즐겨찾기