본문 바로가기

알고리즘

(12)
프로그래머스 Java Lv2 숫자 변환하기 https://school.programmers.co.kr/learn/courses/30/lessons/154538# 해당 문제는 Queue를 이용하여 해결하였다. x를 y로 변환하기 위한 "최소 연산 횟수"를 계산해야 하므로 Queue를 이용하여 x에 "n 을 더하기, 2를 곱하기, 3을 곱하기" 3가지 연산을 하고 Queue에 넣는 방식을 취했다. Queue에 값을 넣을 때는 해당 값이 몇 번 연산된 값인지 표기하기 위해 int[] 를 사용하여 값과 연산 횟수를 같이 저장하였다. 그리고 가장 먼저 y와 같아지는 경우의 시행 횟수를 return 하도록 하였다. "Queue를 사용하므로 가장 처음 같아지는 경우가 최소 연산 횟수이다." 만약 같아 지는 경우가 없다면, 변환이 불가능한 경우이므로 -1 를 ..
[백준] 1004번 자바 정답 코드 import java.util.Scanner; public class Baek1004 { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int T; int x1,y1, x2,y2; double[] d1, d2; int n; int cont = 0; int[] cx, cy, r; T = sc.nextInt(); for(int t = 0 ; t < T;t++){ cont = 0; x1 = sc.nextInt(); y1 = sc.nextInt(); x2 = sc.nextInt(); y2 = sc.nextInt(); n = sc.nextInt(); cx = new int[n]; cy = new int[n]; r..
[백준] 1003번 자바 정답 코드 import java.util.Scanner; public class Baek1003 { public static void main(String[] args){ int T; int n; int[] a,b; Scanner sc = new Scanner(System.in); T = sc.nextInt(); for(int i = 0 ; i < T; i++){ n = sc.nextInt(); a = new int[n+2]; b = new int[n+2]; a[0] = 1; a[1] = 0; b[0] = 0; b[1] = 1; if(n == 0) System.out.println(1+" "+0); else if(n==1) System.out.println(0+" "+1); else{ for(int j ..
[백준] 1002번 자바 오류 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int T; T = sc.nextInt(); int x1, y1, r1, x2, y2, r2; double d; for (int i = 0; i < T; i++) { x1 = sc.nextInt(); y1 = sc.nextInt(); r1 = sc.nextInt(); x2 = sc.nextInt(); y2 = sc.nextInt(); r2 = sc.nextInt(); d = Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2)); i..