목록전체 글 (243)
컴퓨터공학 💻 도서관📚
문제 : 1이 될 때까지 어떤 수 N이 1이 될 때까지 다음 두 과정 하나를 반복적으로 수행하려고 한다. 단, 두 번째 연산은 N이 K로 나누어 떨어질 때만 선택할 수 있다. 1. N에서 1을 뺀다. 2. N을 K로 나눈다. 즉, 다시 말해 K로 나누어 떨어지는 수가 될때까지 1씩 빼는 거다. N과 K가 주어질 때 N이 1이 될 때까지 1,2번 과정을 수행해야 하는 최소 횟수를 구하는 프로그램을 작성하시오. 문제 해결 아이디어 주어진 N에 대하여 최대한 많이 나누기를 수행하면 최적의 해를 보장한다. K가 2 이상이기만 하면, K로 나누는 것이 1을 빼는 것보다 항상 빠르게 N을 줄일 수 있다. n, k = map(int, input().split()) # N, K를 공백을 기준으로 구분하여 입력 받기 r..
그리디 알고리즘(탐욕법) : 현재 상황에서 지금 당장 좋은 것만 고르는 방법 일반적인 그리디 알고리즘은 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요구한다. (like. 수학) 그리디 해법은 정당성 분석이 중요하다.단순히 가장 좋아 보이는 것을 반복적으로 선택해도 최적의 해를 구할 수 있는지 검토해야 한다.일반적인 상황에서 그리디 알고리즘은 최적의 해를 보장할 수 없을 때가 많다.하지만 코딩 테스트에서의 대부분의 그리디 문제는 그리디로 얻은 해가 최적의 해가 되도록 세팅해 놓는다.그리고 우린 이 문제가 그리디 문제인지 추론할 수 있어야 한다.문제 : 거스름 돈500원, 100원, 50원, 10원 동전이 무한히 있다. 손님에게 거슬러 주어야 할 돈이 N원일 때, 거슬러 주어야 할 동전의 ..
I swear to God, she was wrecked. 내가 맹세하는데, 그 여자 엄청나게 취했어 I know. It was pure insanity. (정신 이상) 맞아. 완전히 정신이 나갔어. Lunacy! (정신병 / 바보 짓 / 미친 짓) "난장판"이였어. On us. 저희가 드리는 거에요. (카페 사장님이 손님에게 커피를 공짜로 주며...) Oh, no, thank you. I insist. ( (~해야 한다고) 고집하다 / 주장하다 / 우기다 ) 괜찮아요. 제가 낼게요. (사장님이 커피 공짜로 주겠다는거 거절하고 돈 내겠다고 한 손님) Better be here early tomorrow. 내일 일찍 오는 게 좋겠어. I'm happy for you. 진짜 잘됐어. 참고) https://w..
생성자 오버로딩 : 여러 가지 생성자를 '같이' 정의하는 것 메서드 오버로딩도 가능하다 public class UserInfo { public String userId; // 멤버변수: 객체의 특성 public String userPassWord; public String userName; public String userAddress; public String phoneNumber; // 생성자 오버로딩 public UserInfo(){} // 기본 생성자 public UserInfo(String userId, String userPassWord, String userName) { // 생성자 this.userId = userId; this.us..
생성자는 객체를 생성할 때 자동으로 호출되는 메서드이다. 생성자 기본 문법 (정의)// ( [argument_list] ) { [statements] }// ex)public Student(int studentNumber, String studentName, int grade) { this.studentNumber = studentNumber; this.studentName = studentName; this.grade = grade; }멤버변수 이름과 매개변수 이름이 같을 때는 멤버변수 앞에 “ this. ” 를 붙여준다 this.studentNumber = studentNumber ( this.멤버변수명 = 매개변수명 ) (보통 두 개의 이름을 같게 한다. 나중에 ..
객체 : 객체 지향 프로그램의 대상, 생성된 인스턴스 클래스 : 객체를 프로그래밍 하기위해 코드로 정의해 놓은 상태 객체의 속성을 정의 하고, 기능을 구현하여 만들어 놓은 코드 상태 인스턴스 : new 키워드를 사용하여 클래스를 메모리에 생성한 상태Student studentLee = new Student();//클래스 참조변수 생성자 멤버 변수 : 클래스의 속성, 특성메서드 : 멤버 변수를 이용하여 클래스의 기능을 구현한 함수 참조 변수 : 메모리에 생성된 인스턴스를 가리키는 변수참조 값 : 생성된 인스턴스의 메모리 주소값Student studentLee = new Student();//클래스 참조변수 생성자참조변수, 인스턴스 변수, 멤버 변수 ..
public class Student { public int studentID; //객체의 속성(정보) public String studentName; public String address; public void showStudentInfo() { //클라이언트 입장에서 메서드 이름 짓기 System.out.println(studentName + "," + address); } public String getStudentName() { //클라이언트 입장에서 메서드 이름 짓기 return studentName; }}public class StudentTest { public static void main(String[] args) { Student s..
메서드 : 함수의 한 종류 중 하나- 메서드와 함수의 차이 : 함수는 어디 속해 있지 않지만 메서드는 클래스 안에 속해 있고 그 클래스의 멤버 변수들을 활용해서 구현된 것이다.- 메서드 선언 방식은 C언어 함수 선언 방식과 똑같다. 메서드를 구현함으로써 객체의 기능이 구현된다. 메서드의 이름은 그 객체를 사용하는 객체(클라이언트)에 맞게 짓는 것이 좋다ex) getStudentName() (고객입장에서)public class Student { public int studentID; //객체의 속성(정보) public String studentName; public String address; public void showStudentInfo() { //클라이언트 입장..