본문 바로가기

study

(126)
코드업 2001 그리디 문제 최소 대금 언어: 파이썬 링크: codeup.kr/problem.php?id=2001 최소 대금 입력은 5 행으로 이루어지며, 한 줄에 하나씩 양의 정수가 적혀있다. 1행의 정수는 첫 번째 파스타 가격이다. 2행의 정수는 두 번째 파스타 가격이다. 3행의 정수는 세 번째 파스타 가격이다. 4행 codeup.kr 문제: 입력은 5행으로 한줄에 하나씩 양의 정수가 들어온다. 1,2,3번재 숫자는 파스타의 가격, 4,5번째 숫자는 주스의 가격이다. 파스타와 주스 중 하나씩 골라 조합을 만드는데 그 중, 제일 저렴한 조합을 찾고 10% 더한 금액을 찾아 출력한다. 풀이: 들어오는 입력을 파스타 리스트와 주스 리스트로 나눈다.(또는 한 리스트에 담아도 된다.) 최소 금액 변수를 만들고 파스타 리스트와 주스 리스트의 각각 첫..
자바/JAVA 중첩 클래스, 중첩 인터페이스 중첩 클래스와 중첩 인터페이스(Nested class, Nested interface): 클래스 내에 클래스와 인터페이스를 선언할 수 있다. 중첩 클래스: 클래스 내부에 선언한 클래스. 바깥 클래스가 없다면 필요 없을 만큼 긴밀한 관계일 때 사용한다. 중첩 인터페이스: 클래스 내부에 선언한 인터페이스. 바깥 클래스가 없다면 필요 없을 만큼 긴밀한 관계일 때 사용한다. 중첩 클래스에는 크게 멤버 클래스와 로컬 클래스로 나눌 수 있다. 멤버 클래스는 클래스의 멤버, 즉 필드와 메소드로 선언된 클래스이고, 인스턴스 멤버 클래스와 정적 멤버 클래스로 나눌 수 있다. 로컬 클래스는 생성자 또는 메소드 내부에 선언된 클래스이다. 중첩 클래스도 컴파일하면 파일이 생기는데 멤버 클래스는 "A % B.class" 의 형..
프로그래머스 탐욕법 레벨 1 체육복 문제 설명 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때, 체육수업을 들을 수 있는 학생의 최댓값을 return 하도록 solution 함수를..
자바/JAVA 인터페이스 - 타입 변환 다형성 인터페이스도 메소드 재정의와 타입 변환이 가능해서 다형성을 구현할 수 있다. 인터페이스의 다형성: 인터페이스의 사용 방법, 사용하는 코드는 같으나 구현 객체를 교체하여 프로그램 실행 결과를 다양하게 할 수 있다. 따라서 클라이언트 프로그램은 실제 구현 내용을 몰라도 인터페이스의 정의만 알면 객체를 사용할 수 있다. 인터페이스의 다형성을 사용한 예) JDBC를 사용하기 위해 DB와 연결하는 Connection, 쿼리를 날리는 Statement, 결과를 받는 ResultSet 등이 필요하다. 그래서 각 DB 회사 들은 저 인터페이스를 구현하는 jar를 개발하고, 사용자는 이 jar를 import한다. 결국, DB의 종료와 상관없이 같은 명령문을 사용할 수 있다. Strategy Pattern : 인터페이스를..
자바/JAVA 인터페이스 정리 인터페이스는 객체의 사용 방법을 정의한 타입이다. 이를 통해 다양한 객체를 동일한 방법으로 사용할 수 있고, 다형성을 구현할 수 있다. 개발 코드, 클라이언트는 인터페이스를 통해 객체와 통신한다. 인터페이스의 메소드를 호출하면, 객체의 메소드가 호출된다. 이 방법을 통해 개발 코드를 수정하지 않으면서 객체 교환이 가능하다. 구현되는 클래스의 설명서 역할을 하므로, 보통 프로그램 설계 단계에서 작성된다. 인터페이스의 코드는 .java, .class로 같다. 선언 방법: [public] interface 인터페이스이름 {....} 인터페이스는 객체가 아니므로 생성자는 없지만, 상수 필드와 추상 메소드를 갖고 있다. 추상 메소드는 프로토타입 메소드라고도 한다. 인터페이스의 요소들 interface A { //..
자바/JAVA 추상 클래스, 추상 메소드, 템플릿 메소드 추상 클래스는 반드시 상속되거나 구현돼야 하는 클래스다. 따라서 추상 클래스의 특성을 물려 받는 실체 클래스가 있다. 클래스를 설계할 때 사용한다. 반대로 생각하면 추상 클래스는 실체 클래스들의 규격과 같다. 따라서 실체 클래스들은 공통된 특성을 물려 받고, 자신만의 특정한 특성도 설정할 수 있다.(인터페이스의 특징) 그래서 추상 클래스는 하위 클래스의 공통된 특성(필드, 메소드)을 추출하여 선언한 클래스라고도 할 수 있다. 추상 클래스는 클래스가 갖는 모든 속성과 기능을 가진다. 추상 메소드의 구현 및 상속의 기능을 갖는다. 또한 추상 클래스도 클래스이므로 단일 상속만 지원한다. 클래스 생성 시 abstract를 붙여 선언한다. 이를 통해 상속(구현)을 강제할 수 있다. public abstract c..
자바/JAVA 다형성 구현 정리 다형성(polymorphism): 객체 사용 방법 또는 코드는 동일하나 실행 결과가 다양하게 나오는 성질. 하나의 객체가 여러개의 자료형 타입을 가질 수 있는 것. 메소드 재정의와 클래스 타입 변환으로 구현한다. 장점: 유사한 클래스가 추가되는 경우 유지보수에 용이하고 각 자료형마다 다른 메소드를 호출하지 않으므로 코드가 절약된다. 클래스 타입 변환에는 자동 타입 변환, 강제 타입 변환이 있다 먼저 다시 한번 정리하면 상속을 받은 클래스는 부모 객체를 먼저 호출한다. 따라서 밑에 기술한 클래스 타입 변환이 일어날 때, 객체 변수들이 참조하는 주소는 변하지 않는다. 1. 자동 타입 변환(Promotion, Up Casting, 묵시적) - 자식 인스턴스가 부모 클래스 타입의 변수에 담기는 것이다. 여기서 ..
파이썬 문법 정리 내가 잊어버리는 걸 위주로 정리함. ord(숫자) : 아스키코드로 변환 int("0xf", 16) == 15 : 16진수를 10진수로 변환 ~a : 비트 단위로 not 연산을 취함. a & b : 비트 단위로 and 연산 a | b : 비트 단위로 or 연산 a ^ b : 비트 단위로 xor 연산 참일 때 값 if 조건 else 거짓일 때 값 : 삼항 연산자 ex) a if a > b else b for문을 통해 리스트 요소를 수정할 때 주의할 것: range를 사용하지 않고, 직접 리스트를 접근한다면 요소를 출력할 수는 있지만, 수정할 순 없다. 수정을 위해선 리스트로 접근해야 한다. for i in temp: print(i) ## 리스트 요소를 바로 출력할 수 있다. for i in temp: i =..