이 문제에서 주의할 점은 하나다. 꼭대기 층일때의 방 번호다. 일반적인 방 번호를 구하는 식은 손님의 번째 수 /층를 이용해 앞번호는 나머지, 뒷벗호는 몫+1 이지만 꼭대기 층일경우 몫은 1이 되서 2가 되버리고 나머지는 0이 되서 앞번호가 0이 되어버리기 때문이다. 이것만 주의하면 조금만 생각해도 풀 수 있는 문제. import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class bae10250 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); List floor=new ArrayList(); List room..
시간 복잡도를 신경 안썼더니 점점더 시간이 오래걸린다. 10000을 입력하고 시간을 재보니 2초정도 나왔다. 너무 오래걸린다. public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); List arr=new ArrayList(); int input; int min,max; int count=0; while(true){ input=scanner.nextInt(); if(input==0) break; else arr.add(input); } for(int i=0;i
아직은 시간복잡도를 생각하지 않고 생각 하는대로 구현중이다. 감좀 다시 익히고 나면 시간복잡도도 다시 신경써야겠다. public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int min=0,max=0; min=scanner.nextInt(); max=scanner.nextInt(); for(int i=min;i
1은 나오지 않게 했습니다. public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int input_num = scanner.nextInt(); int division_num = 2; while (true) { if(division_num>input_num) break; else { if (input_num % division_num == 0) { System.out.println(division_num); input_num = input_num / division_num; } else { division_num++; } } } }
보기에는 쉬운문제. 하지만 의외로 생각해야 할게 있었다. 일단 시작하는 날을 0부터가 아니라 1부터 인것. 그리고 낮에 올라가있는 위치와 밤에 올라가 있는 위치를 고려해야 한다. 처음 문제를 풀때는 단순하게 현재 달팽이의 위치와 나무의 높이를 비교했지만, 다르게 나왔고, 무엇이 문제 인지 고민했다. 달팽이가 올라가는 높이는 2, 떨어지는 높이는 1, 나무의 높이가 5라고 가정해보자. 1일차에는 2의 높이까지 올라와 있다. 하지만 나무의 높이가 5이므로 올라오지 못했다. 2일차에는 밤에 자는동안 1의 높이 만큼 떨어져 있다. 다시 올라가니 3의 높이 만큼 올라와 있다. 3일차에는 2의 높이에서 시작. 4만큼의 높이에 도착. 4일차에는 3의 높이에서 시작. 5만큼의 높이에 도착. 종료 이 문제의 핵심을 날짜..
알고리즘 문제를 푸는 첫 단계는 언제나 규칙성을 찾아보는 것이다. 단순 무식하게 배열을 만들어서 풀어도 되지만, 시간도 오래걸리고 비효율적이다. 따라서 규칙을 찾고 그 규칙에 따라 수학적으로 풀어보자. 설명을 보고 규칙을 찾아보면 이런 식으로 분수를 읽는것 을 알수 있다. 또한 시작하는 분수의 분모와 분자는 n번째 화살표(위에서 작은 순서부터)이면 분모 혹은 분자도 n인것을 알 수 있다. 그리고 n+1번 분수는 n번 분수보다 분자가 1작고 분모는 1이 크다.(하나의 화살표에서만 해당) 풀이 규칙 n+1번 분수는 n번 분수보다 분자가 1작고 분모는 1크다. n번쨰 화살표의 각 끝부분 분수는 분자 or 분모가 n이다. 지그재그이므로 가장 작은 화살표 를 1번이라 하고, 그 다음 화살표를 2번이라 할때 , 홀..