목록전체 글 (408)
오답노트
인터페이스 인터페이스란 서로 다른 것을 소통할 수 있게 해주는 일종의 도구다. 우리는 컴퓨터와 소통하기 위해 키보드를 사용하고, TV와 소통하기 위해 리모컨을 사용한다. 이처럼 Java는 소통할 수 있는 도구를 만들 수 있는 인터페이스라는 것이 있다. 인터페이스는 함수를 가상화하여 가지고 있고, 구체적인 수행 내용은 클래스가 받아 정의를하게 된다. 그리고 Java는 다중상속이 불가능하지만 인터페이스를 통해 이 한계를 극복했다. 인터페이스는 다른 클래스를 작성할 때 기본이 되는 틀을 제공한다. 인터페이스 사용 인터페이스 생성 public interface Calc { double PI = 3.14; int ERROR = -99999999; int add(int num1, int num2); int subs..
static 변수 static 변수는 데이터 영역에 위치하게 되어 어디서든 호출 가능한 변수이다. 이를 이용해 디자인 패턴 중 하나인 싱글턴 패턴을 사용할 수 있다. 싱글턴 싱글턴 패턴은 단 한개의 인스턴스를 생성하여 사용하는 것을 의미한다. 논리적인 예를 들면 기업 같은 경우 절대 중복일 수 없다. (삼성전자가 두 개가 아닌 것처럼) 이때 기업을 싱글턴으로 만들어야 한다. 이 때 인스턴스를 static 변수로 만들어 전역으로 사용할 수 있도록 해야한다. 하지만 일반적으로 인스턴스를 생성하는 것처럼 사용할 수 없다. 아래 코드를 보며 싱글턴 패턴을 살펴보자. public class CarFactory { private static CarFactory instance = new CarFactory(); p..
유형 변수나 함수가 선언되는 위치에 따라 그 유형이 달라지게 된다. Local 일정 구역에서만 사용할 수 있는 변수, 함수는 스택 메모리를 사용하게 된다. 호출과 동시에 스택 메모리에 할당되며 지역을 벗어나면 스택 메모리에서 사라지게 된다. public class LocalTest{ void func(int n){ n += 1; System.out.println("func : " + n); } public static main(String[] args){ int n = 0; func(n); System.out.println("main : " + n); } } Member 클래스 내부에서 생성된 변수, 함수는 힙 메모리를 사용하게 된다. 힙 메모리는 동적 메모리로 나중에 가비지 콜렉터가 수거하기 때문에 따..
구글 맵 API Google 클라우드 플랫폼 로그인 Google 클라우드 플랫폼으로 이동 accounts.google.com 위 링크로 들어가서 본인 구글 계정을 API를 사용할 수 있도록 활성화 하고 프로젝트를 만든다. key 생성 및 제한 추가 좌측 탭에서 '사용자 인증 정보' 클릭 후 상단에 '사용자 인증 정보 만들기'를 클릭 해 API 키를 생성한다. 사진에는 API키가 생성되어 있지만 처음 접속한다면 없는 것이 정상. 생성된 API 클릭 위 사진처럼 세팅한다. 하지만 웹사이트 추가의 웹사이트의 주소는 자신의 환경에 맞게 설정하자. (나는 포트포워딩으로 외부에서 접속할 수 있도록 만들어 놨다. 그래서 공인IP와 열어 놓은 포트로 웹사이트를 설정했다.) API 키를 복사한다. (나중에 flutter..
Dart 시작하기 – 노마드 코더 Nomad Coders Flutter 앱 개발을 위한 Dart 배우기 nomadcoders.co 함수 정의 void sayHello(String name){ print("Hello $name nice to meet you"); } String sayHellopotato(String potato){ return "Hello $potato nice to meet you"; } String sayHellopotato_fatarrow(String potato) => "Hello $potato nice to meet you"; num plus(num a, num b) => a + b; void main() { print(sayHellopotato('ksw')); } 보통의 언어들..
Dart 시작하기 – 노마드 코더 Nomad Coders Flutter 앱 개발을 위한 Dart 배우기 nomadcoders.co 자료형들 Basic Data Type void main() { String name = 'name'; bool alive = true; int age = 12; double money = 69.99; // 위 자료형은 모두 클래스 // int와 double은 num 클래스부터 상속된 클래스 num x = 12; x = 1.1; } 앞에 포스트에서 언급했듯 숫자관련 자료형은 num을 부모 클래스로 가지고 있다. List void main() { var givemefive = true; var numbers = [1,2,3,4, if(givemefive) 5, // collect..
Dart 시작하기 – 노마드 코더 Nomad Coders Flutter 앱 개발을 위한 Dart 배우기 nomadcoders.co 기본 문법 기존에 C,C++의 감각으로 해야한다. 일부 사용자는 JS와 가깝다고 말한다. 하지만 난 JS와 친하지 않아 C,C++ 처럼 사용하려 노력하고 있다. void main() { print('hello world'); } 기본적으로 main 함수에서 호출되며 코드의 마지막은 항상 세미콜론(;)으로 끝나야한다. 자료형을 보면 생각보다 엄격한 언어라는 생각이 든다. VARIABLES var void main() { var name = 'name'; // 지정한 변수는 자료형 변경 불가능 name = 'ksw'; // string // 함수나 메소드 내부에 지역 변수를 선언..
문제 https://www.acmicpc.net/problem/18111 18111번: 마인크래프트 팀 레드시프트는 대회 준비를 하다가 지루해져서 샌드박스 게임인 ‘마인크래프트’를 켰다. 마인크래프트는 1 × 1 × 1(세로, 가로, 높이) 크기의 블록들로 이루어진 3차원 세계에서 자유롭게 www.acmicpc.net 풀이 0층부터 256층까지 모두 둘러보면서 만들 수 있는 최소시간에 만들 수 있는 최고층을 찾으면 된다. 이때 블럭을 제거하면 다시 그 블럭을 사용할 수 있는데, 이 조건을 충족시키는 층끼리만 비교하면 된다. import sys N, M, B = map(int,sys.stdin.readline().split()) map_list = [] ans = 1e9 idx = 0 for _ in ra..
문제 https://www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net 풀이 틀린 풀이 어렵게 풀려고 했다. 채널에 가까운 작은 수와 큰 수를 찾았는데 너무 처리해야할 예외가 많았다. 그래서 멘탈이 터져서 포기.. import sys N = sys.stdin.readline().rstrip() M = int(sys.stdin.readline()) if M > 0: btn_list = list(map(int,sys.stdin.readline().s..
OpenDartReader GitHub - FinanceData/OpenDartReader: Open DART Reader Open DART Reader. Contribute to FinanceData/OpenDartReader development by creating an account on GitHub. github.com OpenDartReader는 금융감독원 전자공시 시스템의 "Open DART"서비스 API를 손쉽게 사용할 수 있도록 돕는 오픈소스 라이브러리다. 사용법 객체 생성 !pip install opendartreader 위 커맨드로 OpenDartReader를 인스톨한다. https://opendart.fss.or.kr/ 전자공시 OPENDART 시스템 --> 시스템 점검으로 모든 서..