분류 전체보기101 [java] 백준 13909 창문 닫기 n번째 사람이 n의 배수에 해당하는 창문을 닫혀있으면 열고, 열려있으면 닫는 문제이다. 이 문제는 메모리가 64mb로 제한적이고 입력값은 0; i--) { if (i % k == 0) { window[i - 1] = !window[i - 1]; //i번째 창문이 k배수라면 boolean타입을 반대로 변경 } } } for (boolean a : window) { if (a == true) { count++; } // 열린창문세기 } System.out.print(count); } } 이런식으로 boolean 특성을 이용하여 풀이를 할 수 있다. 하지만 메모리를 신경써야한다, 즉 연산을 줄일 어떠한 규칙이 있을 것으로 생각할 수 있다. 그렇다면 수를 차례대로 넣으며 true가 나오는 배열의 값을 알아내 보.. 2024. 1. 29. [java] 17103 골드바흐 파티션 이 문제는 짝수는 두 개의 소수로 이루어져 있다는 골드바흐 파티션의 개수를 출력하는 문제이다. 문제는 간단하나 요구조건을 생각해야한다. 1. 3, 7 7, 3 철럼 같은 수로 이루어진 수는 1개로 취급한다. 2. 0.5초의 시간으로 걸리는 시간을 고려한다. 이 두 조건이 은근 까다롭다. 특히 제한시간이 짧아 시간초과가 많이 떳다. 다음은 옳게 작동하나 시간초과가 뜨는 코드이다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws Exception { Buffered.. 2024. 1. 29. [java] 백준4928 베르트랑 공준 입력범위롸 소수를 찾는 메소드에 주의한다. Math.sqrt(num)는 해당하는 num의 제곱근을 double타입으로 반환한다. 즉 7을 넣으면 2.xxxx를 반환하는 것이다. 여기서 헷갈린 점은 만약 isPrime에 2가 들어간다면? 이었다. 2%2 == 0이니 안걸러지는거 아닐까 하는 생각이다. 하지만 이는 잘못된 생각이었다. 2의 제곱근은 1.xx이므로 반복문이 작동하지 않고 바로 true로 가기 때문이었다. 경계값에서 좀 더 주의할 필요가 있어 보인다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void .. 2024. 1. 29. [java] 백준 1929 소수 구하기 소수를 구하는 메소드만 만들줄 알면 매우 간단하다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader((System.in))); StringTokenizer st = new StringTokenizer(br.readLine()); // 공백 입력을 위한 stringTokenixer int N = Integer.parseInt(st.ne.. 2024. 1. 29. [java] 백준 4134 다음 소수 이 문제는 주어진 값에 대해 크거나 작은 수 중 가장 가까운 소수를 수하는 문제이다. 제한시간이 1초인 문제이기 때문에 반복문의 범위가 굉장히 중요한 것으로 생각된다. 주의할 점은 입력받은 수의 크기가 최대 40억이기 때문에 int대신 long타입을 써야한다. 소수인지 판별해 알려주는 isPrime메소드를 만들었다. 소수면 true, 아니면 false를 반환한다. 2보다 작은 값은 소수가 아니기 때문에 false를 반환한다. 소수가 아닌 숫자들은 해당 수의 제곱근보다 작거나 같은 값을 무조건 약수로 가진다. 따라서 반복문 범위를 제곱근까지만 해도 해당 수가 소수가 아닌 것을 판별할 수 있다(제곱근보다 작거나 같은 수로 나누어 진다면). 가장 가까운 소수를 출력해야 하기에 0, 1에 대해 2로 출력하는 에.. 2024. 1. 29. [java] 백준 2485 가로수 이 문제는 최대공약수를 잘 활용해야 하는 문제이다. 이 문제를 잘 이해해 보면 "주어진 나무들의 간격을 일정하게 했을 때 최소 몇 그루의 나무가 필요한가?" 가 핵심이다. 그렇다면 주어진 나무들의 간격을 최대한 넓게 유지해야 할 것이다. 즉 우리는 나무사이의 간격의 최대값 즉 최대공약수를 알아내야한다. 그렇다면 최소한 몇 그루가 필요한지 알게되고, 기존에 심긴 나무수를 제외하면 정답을 맞추게 된다. 우선 생각나는대로 코드를 만들었다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; public class Main { public static void main(String[] args) t.. 2024. 1. 26. 이전 1 ··· 7 8 9 10 11 12 13 ··· 17 다음