백준 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문 사용
Author And Source
이 문제에 관하여(백준 1436번 - 영화감독 슘), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@albatross__3/백준-1436번-영화감독-슘저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)