생각Github - https://github.com/hellojdh/Code/blob/master/src/swexpert/d3/Q5688.java 주어진 수 N의 세제곱근이 있는지 구하여라. 있다면 그 수를 아니라면 -1을 출력한다. 처음 생각N이 10^18승 까지 주어지므로 무지무지 큰 숫자이다. 따라서 BigInteger를 이용해서 큰 수를 처리해 주었다. 다음 생각일일히 세제곱근이 존재하나 판단해 주었더니 시간 초과를 얻었다.▶ 에라토스테네스의 체 처럼 10^18승 이므로 10^6승 까지의 세 제곱을 미리 구해놓고 가능한지를 판단하는것으로 바꾸었다. 다다음 생각10^6승 까지의 세제곱 수를 미리 구해놓고 판단을 하기 위해서 HashMap로 Key값으로는 들어오는 값, Value로는 세제곱이 가능한..
생각Github - https://github.com/hellojdh/Code/blob/master/src/swexpert/d1/Q1933.java 주어진 N의 약수들을 출력한다. 처음 생각N의 약수는 N을 나눴을 때, 나머지가 0이되는 수 이다. 방안12345678910111213package swexpert.d1; import java.util.Scanner; public class Q1933 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); for(int i=1;i
생각Github - https://github.com/hellojdh/Code/blob/master/src/swexpert/d1/Q2019.java 받은 N 값 까지의 2배한 수를 차례대로 출력하여라. 처음 생각반복문과 곱셈에 대한 문제이다. 방안1) 따로 변수를 지정해서 저장하면서 나가도 되지만 Math.pow() 메소드를 이용해 보았다. 12345678910111213package swexpert.d1; import java.util.Scanner; public class Q2019 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); for(int i=0;i
생각Github - https://github.com/hellojdh/Code/blob/master/src/swexpert/d1/Q1936.java 가위 바위 보를 해서 이긴 사람을 출력하여라. 단, 비기는 경우는 없다. 처음 생각입 출력과 조건문을 따지는 문제이다. 방안1) IF ELSE 문으로도 가능하지만 3항 연산자를 사용해봤다. 12345678910111213141516171819package swexpert.d1; import java.util.Scanner; public class Q1936 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.n..
생각Github - https://github.com/hellojdh/Code/blob/master/src/swexpert/d1/Q1545.java 입력 받은 N 부터 0 까지 거꾸로 출력시켜라. 처음 생각입출력을 할 수 있는가에대한 문제이다. 입력이 적으므로 Scanner를 통해 입력을 받았다. 방안1) 입력이 많아질 경우는 BufferedReader를 사용하는 것이 좀 더 효율적이다. 12345678910111213package swexpert.d1; import java.util.Scanner; public class Q1545 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextI..
생각홈 방범 서비스를 하는 업체가 있다. 방범 범위 K 값에 따라 아래와 같이 범위가 달라진다. 주어진 M은 집마다 지불하는 방범 비용이다. 아래와 같은 경우 방범 서비스의 유지 비용과 방범 서비스로 벌어들이는 비용의 차 즉, 업체의 이익은 다음과 같다. K=3 이므로 3*3+(3-1)*(3-1)이 되어 운영 비용은 13이 되고 집들이 5개가 들어가 있으므로 M=3일 때, 3*5=15 가 되어 업체의 이익은 15-13 = 2 가 된다. 이경우 업체가 손해를 보지 않기 때문에 최대 방범 가능한 집의 수는 5개가 된다. 조건이 주어질 때, 업체가 손해 보지 않을 때 최대 집의 수를 출력하여라. 처음 생각수학적인게 생각나면 좋겠지만, BFS를 통해 K 만큼 범위를 넓혀가면서 집의 개수를 찾는 완전 탐색이 떠올..
생각보호 필름을 생산했다! 이 보호 필름의 성능을 체크하려고 한다. 깊이가 D이고 넓이가 W인 보호 필름이 다음과 같이 주어졌을 때, 열 별로 같은 특성이 연속해서 가진 경우는 다음과 같다. 여기서 연속 조건 K 개를 만족해야, 성능 테스트를 통과하게 된다. 위의 보호 필름에서 다음과 같이 2 행에 약물을 투여할 경우 모든 열에서 K=3일 때 조건을 만족시킬 수 있다. 성능 테스트를 통과시키기 위해서 약물을 최소한으로 투입하는 횟수를 구하여라. 처음 생각수학적인 공식이 전혀 떠오르지 않는다. 따라서 우선 완전 탐색을 진행하였다.▶ 시간도 기존의 문제들 보다 긴 5초를 준다. 그만한 이유가 있어 주는 것이라 생각한다. 다음 생각이걸 어떻게 완전 탐색으로 풀 수 있을까? 약물 주입이 변하는 조건이므로 해당 ..
생각두명의 사람이 벌꿀을 채취하려고한다. 각 사람은 [N][N] 배열에서 가로로 이어져있는 M 칸을 선택할 수 있는데, 두 사람이 고른 칸이 1칸이라도 중복이되어서는 안된다. 칸을 골랐으면 각자 주어진 C만큼 벌꿀 채취가 가능하다. 아래와 같이 주어진 벌꿀 판에서 C=13이고 M=2일 경우 최대 이득은 174가 된다. 위를 봐서는 모든 칸을 계산 하는 것 같지만 아래와 같이 주어진 C를 넘기지 않는 선에서 최대 값을 구하여야한다. N,M,C와 배열이 주어졌을 경우 최대값을 출력하라. 처음 생각주어진 배열에서 조건에따른 최대값을 찾아야한다. 따라서 별다른 생각이 나지 않아 완전 탐색을 하였다.▶ 조건이 행으로만 M칸 진행으로 주어졌기 때문에 각 행별로 M칸씩 모든 경우를 살펴보았다.▶ 주어진 N이 최대 1..
생각디저트 카페가 2차 배열에 숫자로 주어진다. 각 디저트 카페에서 아래 사진과 같이 대각선으로 다른 카페로 이동할 수 있다. 이 때, 같은 숫자를 가진 카페로는 이동을 하지 못할 때, 가장 많이 디저트를 먹을 수 있는 수를 출력하여라. 풀이후 생각이 문제를 풀이도중 하반기 서류탈락을 했습니다. 당분간은 역량 테스트용 문제는 조금 줄이고 일반 알고리즘 문제 위주로 풀어야겠네요. 서류 붙으신 분들은 축하드리고 이 글을 읽고 계시다는 자체가 테스트 통과를 위해 노력하고 계신다는 거니 잘 치루셔서 좋은 결과 있으시길 바라겠습니다! 처음 생각1 static int[][] dir = {{1,1},{1,-1},{-1,-1},{-1,1}};cs맵을 탐색하는데 상 하 좌 우가 아닌 대각선 방향으로 탐색을 진행하기 위해..
생각정비소에 다녀간 어떤 고객이 지갑을 잃어버렸다. 모든 고객에게 전화를 할 수 없으므로 이 고객이 다녀갔던 접수 창고와 정비 창고를 이용한 고객들에게만 전화를 하려한다. 이 고객과 같은 접수 창고와 정비 창고를 이용한 고객 번호를 더한 값을 구하시오. 없을 경우 -1을 출력한다. 풀이후 생각둘을 하나로 묶어서 풀이를 하려해서 시간이 무척 오래걸렸고, 결국 1개의 PriorityQueue와 1개의 일반 Queue를 이용해서 풀었다. 시간이 오래걸린 이유는 각 창구들을 들어가고 나갈 때, 우선순위를 설정해 주어야하는데 Comparator 1개로 모든걸 해주려하니 너무 복잡해져서 머리가 핑 돌아버렸다. 처음 생각우선 시간별로 완전 탐색을하여 PriorityQueue를 이용해서 우선 순위를 정해주며 진행을 하..
- Total
- Today
- Yesterday