목록알고리즘 (266)
Dev.baelanche
번역 누구나 풀 수 있는 난이도의 문제이다. 다음 영어문제는 난이도를 올려서 영어 + 해결력 을 모두 챙겨봐야겠다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); char c[] = sc.next().toCharArray(); int finger[] = new int[8]; for(int i=0; i
번역 업무 중 번역한거라 발번역이다(핑계다). 별다른 알고리즘 기법없이 문자열을 잘 다루면 된다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); while(n-->0) { char a[] = sc.next().toCharArray(); char b[] = sc.next().toCharArray(); reverse(a); reverse(b); int x = charToint(a); int y = charToint(b); int sum = x + y; char c[] = String.valueOf(sum).toCharArray(); for(i..
번역 정말 발번역이다. 문제가 너무 쉬워서 힌트만 보고도 풀 수 있다. 직접 번역은 처음이라 재미있었다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int sum = 0; for(int i=0; i
문제의 특징을 살펴보자. 1. 노드가 향하는 방향은 1가지이다. 2. 순열은 반드시 사이클을 이룬다. 위 특징때문에 각 노드는 반드시 한번만 방문하게 되므로 1차원 배열로도 충분히 구현할 수 있다. public class Main { static int n; static int a[]; static boolean visited[]; static int cnt = 0; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); while(t-->0) { n = sc.nextInt(); a = new int[n+1]; visited = new boolean[n+1]; for(int i=1; i
메모이제이션 + 탐색을 요구하는 문제다. 1. 경로의 개수가 21억즈음이므로 메모이제이션 없이 돌리면 시간초과가 난다. 2. 아래, 오른쪽으로 가는 경로의 개수를 합하면서 이동하기 때문에 dp 배열은 long으로 해줘야 한다. 3. 게임판 배열은 0
상, 하, 좌, 우, 위, 아래로 퍼진다는 것만 유의하며 BFS 를 하면 된다. int dh[] = {0, 0, 0, 0, -1, 1}; //위, 아래 int dn[] = {-1, 1, 0, 0, 0, 0}; //상, 하 int dm[] = {0, 0, -1, 1, 0, 0}; //좌, 우 나는 이렇게 해결했다. 처음부터 모두 익어있다면 0, 모두 익지 못한다면 -1이 출력되는 부분을 따로 예외처리 해주었다. int cnt = -1; //기본 카운트 while(!q.isEmpty()) { //로직 수행 cnt++; } for() { //토마토 배열 체크 } //딱 한번 수행되고 멈추었다면 안익은 토마토가 없다는 뜻이므로 0 출력 //토마토 배열을 체크하여 안익은 토마토가 있다면 -1 출력 //모두 익었다..
네개의 값을 다음과 같은 방법으로 구했다. 산술평균 : 입력받을 정수들을 모두 더해 n으로 나누어 반올림 중앙값 : 배열을 정렬해 가운데 배열의 값을 출력 최빈값 : 인덱스, 빈도 횟수를 담은 클래스를 만들어 정렬한 후 최빈값(여러 개 일시 두번째 값) 출력 범위 : 최대값 - 최소값 public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int n = In..
n이 10000이하이므로 10000까지의 소수를 저장해 놓는다. 두 소수의 차이가 가장 작아야 하므로 n/2를 기준으로 반복문을 돌며 소수 쌍을 찾아냈다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); int prime[] = new int[10001]; for(int i=2; i0; i--) { if(prime[i] == 0 && prime[n-i] == 0) { System.out.println(i + " " + (n-i)); break; } } } } }