Math.sqrt() 함수는 제곱근을 계산하는 데 사용된다.성능 최적화와 수학적 계산에 주로 사용이 되는데, 그 사용법을 정리하려고 한다. 용도1. 소수 판별 최적화여기서 말하는 소수란 분수 소수의 소수가 아니라 약수가 1과 자기 자신뿐인 소수를 말한다.소수 판별을 할 때 모든 수를 나눠보는 대신, 제곱근까지만 확인하면 시간 복잡도를 줄일 수 있다.예를 들어, n이 소수인지 확인하기 위해서 1부터 n-1까지 나눠볼 수 있지만,이렇게 되면 시간 복잡도가 O(n)이 된다.소수가 아니라면 1과 자신 외에 다른 약수가 있기만 하면 되므로1부터 제곱근 n까지만 확인하면 된다.이렇게 시간 복잡도를 O(n)에서 O( √ n)으로 줄여줄 수 있다.// n이 소수인지 아닌지 판별하는 메소드public boolean is..
Java
[문제]정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요.num은 int 범위의 정수입니다.0은 짝수입니다. [나의 풀이]나머지 연산자인 %if else문class Solution { public String solution(int num) { String answer = ""; if(num%2==0) { answer = "Even"; } else { answer = "Odd"; } return answer; }} [다른 사람의 풀이 + 내 풀이와의 차이점]조건연산자(삼항연산자)👉 코드 수가 훨씬 줄어들었고, answ..
타입 변환(Casting)을 이해하기 어렵다는 사람들이 종종 보인다. 내가 타입 변환에 대해 이해한 방식을 한 번 작성해보려고 한다. 가정 Parent라는 부모 클래스가 있고, Child라는 클래스가 Parent 클래스를 extends(상속)했다고 가정해보자. 이때 아래 사진처럼 Parent Class는 큰 물통에, Child Class는 작은 물통에 비유를 할 수 있다. 이 가정과 함께 코드를 보면서 이해해보자. Parent p = new Child(); 위 코드는 new Child()를 통하여 Child 객체를 만들어 Parent 객체에 담고 있다. 즉, 작은 물통의 물을 큰 물통에 담고 있는 것이다. 이럴 경우에는 물이 넘칠 일이 없기 때문에 옮겨담을 물통을 따로 챙기지 않아도 된다. 👉 작은 크기..
짝꿍이 추상 클래스와 인터페이스의 차이에 대해서 고민을 하는 모습이 보였다. 도와주고 싶었으나 막상 설명을 해주려니 나도 명확하게 이야기하기가 어려웠다. 클래스는 단일 상속, 인터페이스는 다중 상속이 가능하다는 것 외에는 나도 둘의 명확한 차이를 잘 모르겠더라..🤔 그래서 이번 기회에 둘의 차이를 작성해보려고 한다. 추상 클래스와 인터페이스의 차이 구분 추상 클래스 인터페이스 공통점 객체 생성 인스턴스화 할 수 없음(new 생성자를 사용하지 않음) 👉 인터페이스 혹은 추상 클래스를 상속받아 구현한 구현체의 인스턴스를 사용해야 함 추상 메서드 추상 메서드를 가지고 있어야 함 기능적 목적 상속 받는 클래스에서는 추상 메서드를 반드시 재정의하여 구현해야 함 차이점 정의 하나 이상의 추상 메서드를 가지는 클래스..
1회-1번) 아래 자바 코드에서 출력되는 값을 작성하시오. class Static { public int a = 20; static int b = 0; } public class Test001 { public static void main(String[] args) { int a; a = 10; Static.b = a; Static st = new Static(); System.out.println(Static.b++); System.out.println(st.b); System.out.println(a); System.out.println(st.a); } } 더보기 답: 10 11 10 20 1회-14번) public class Test002 { public static void swap(int[] a..
1회-1) 다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.) class A { int a; int b; } public class Test001 { static void func1(A m) { m.a *= 10; } static void func2(A m) { m.a += m.b; } public static void main(String[] args) { A m = new A(); m.a = 100; func1(m); m.b = m.a; func2(m); System.out.printf("%d", m.a); } } 더보기 답: 2000 func1을 통해서 100*10 = 1000 func2를 통해서 1000 + 1000 = 2000 1회-2)..
1회-1) 다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.) public class Test001 { public static void main(String[] args) { int aa[][] = {{45, 50, 75}, {89}}; System.out.println(aa[0].length); System.out.println(aa[1].length); System.out.println(aa[0][0]); System.out.println(aa[0][1]); System.out.println(aa[1][0]); } } 더보기 답: 3 1 45 50 89 1회-2) 다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출..
1회) 다음 Java 언어로 구현한 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.) public class Test001 { static int[] arr() { int a[] = new int[4]; int b = a.length; for (int i=0; i 0 (2) n % 2 4회-2) 다음 Java로 구현된 프로그램을 분석하여 괄호에 들어갈 알맞은 답을 쓰시오. public class Test008 { public static void main(String[] args) { int ary[][] = new int [(1)][(2)]; int n = 1; for (int i=0; i
1회) 다음 Java 언어로 구현한 프로그램을 분석하여 그 실행 결과를 쓰시오. class SuperObject { public void paint() { draw(); } public void draw() { draw(); System.out.println("Super Object"); } } class SubObject extends SuperObject { public void paint() { super.draw(); } public void draw() { System.out.println("Sub Object"); } } public class Test { public static void main(String[] args) { SuperObject a = new SubObject(); a.p..
1회) 다음 Java 언어의 과 를 보고 괄호 (1), (2)에 적용될 수 있는 가장 적합한 답을 쓰시오. 배열에는 95, 75, 85, 100, 50이 차례대로 저장된다. 배열에 저장된 값을 오름차순으로 정렬하여 출력한다. public class Test001 { public static void main(String[] args) { int E[] = {(1)}; int i = 0; int Temp = 0; do { int j = i; do { int j = i; do { if (E(i) > (2)) { Temp = E[i]; E[i] = E[j]; E[j] = Temp; } j++; } while (j < 5); i++; } while (i < 4); } for (int a=0; a