가끔 전체 프로그램에서 단 하나의 객체만 만들도록 보장해야하는 경우가 있다. 예를 들어 회원가입과 관련된 기능들을 구현한다하면 1.데이터를 저장할 용도 클래스 - 아이디, 이름, 비밀번호 : 이러한 용도의 클래스는 회원마다 독립적인 객체이므로 싱글톤으로하면안된다. (싱글톤으로하면 모든 회원이 같은 정보가 들어가기때문에) 2.로직을 처리할 용도 클래스 -회원가입 -로그인 -로그아웃 -회원정보수정 이런 것들은 싱글톤으로 구현한다 왜냐? 로그인성공하면 true 아니면 false인데 객체를 매번생성할필요없어 홍길동이 쓰던 김길동이 쓰던 그러니까 독립적으로 쓸필요가없기 때문이다. 그래서 싱글톤으로 구현한다 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ..
문제 설명 자연수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한 사항 n은 0 이상 3000이하인 자연수입니다. 입출력 예 nreturn 12 28 5 6 입출력 예 설명 입출력 예 #1 12의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다. 입출력 예 #2 5의 약수는 1, 5입니다. 이를 모두 더하면 6입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 class Solution { public int solution(int n) { int answer = 0; int [] div = new int [n]; for(int i=1; i
클래스 내 같은 이름의 메소드를 매개변수 유형과 개수를 다르게하여 같은 이름의 메소드를 여러개 선언하는 것을 메소드 오버로딩(Method Overloading)이라 한다. 메소드 오버로딩이 필요한 이유는 매개값을 다양하게 받아 처리할 수 있도록 하기 위함이다. 주의점 : 1. 매개변수의 이름이 다르다고 해서 메소드 오버로딩이라 하는 것이 아니라 매개변수의 개수나 매개변수 타입 또는 순서가 달라야 메소드 오버로딩이라 할 수 있다. 2. 리턴 타입만 다르고 매개 변수가 동일하면 이것 또한 메소드 오보로딩이라 할 수 없다. 메소드 오버로딩의 가장 대표적인 예 : System.out.println() 메소드 println() 메소드는 호출할 때 주어진 매개 값의 타입에 따라서 다음과 같이 오버로딩된 printl..
생성자(Constructor)는 new 연산자로 클래스로부터 객체를 생성할 때 호출되어 객체의 초기화를 담당한다. 생성자를 실행하지 않고는 클래스로부터 객체를 만들 수 없다. new 연산자에 의해 생성자가 성공적으로 실행되면 힙(heap)영역에 객체가 생성되고 객체의 주소(번지)가 리턴된다. 1. 기본생성자 모든 클래스는 생성자가 반드시 존재하며, 생성자를 1개 이상을 가질 수 있다. 코드 작성시 클래스내부에 생성자 선언을 생략하였다면 컴파일러는 다음과 같이 블록 내용이 비어있는 기본생성자를 바이트 코드에 자동으로 추가한다. public class Car{ } ↓ 컴파일 public class Car{ public Car() {} // 자동추가 } 그렇기에 클래스에 생성자를 선언하지 않아도 기본생성자를 ..
문제 설명 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다. Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하도록 solution 함수를 작성해주세요. 제한 사항 scovil..
위 코드를 CMD에서 실행 이는 이클립스에서 Run Configurations를 통해서 실행한 것 과 동일하다.