"Boldness has genius, power, and magic in it." - Johann Wolfgang von Goethe
728x90
728x90

전체 글 63

[JAVA] 객체 지향 프로그래밍 실습 예제 -Take

학습 내용 객체간 협력에 대한 이해하기 객체 간 상호작용하는 간단한 실습 예제 🚎 객체 지향 프로그래밍에서의 협력(Collaboration) 객체 지향 프로그래밍을 하는 이유라고도 할 수 있는 객체 간 협력은, 각자 고유의 역할을 하는 객체 간에 필요한 메세지를 주고 받고 이를 처리하는 기능이 구현 되어 있는 것을 의미합니다. 예를 들어 학생이 버스를 탈 때, 학생과 버스는 각자 존재하는 객체이고, 버스를 타는 행위는 이 두 객체간의 협력을 요구합니다. 이때 매개변수로 객체가 전달되는 경우도 발생합니다. 📌 교통수단을 이용하는 학생 예제 학생이 버스, 지하철, 택시를 이용하는 미니 객체 지향 프로그래밍을 실습합니다. 학생이라는 객체와 탈것들 각각의 객체가 있고, take() 라는 행위 메서드를 통해 요금..

JAVA_SPRING 2022.10.04

[Python] 트리(Tree)구조와 이진 탐색 트리 정리

학습 내용 자료구조 중 트리(Tree) 구조의 개념 이해 이진 트리와 이진 탐색트리 Python 링크드 리스트 생성에 이진 탐색 트리 적용하기 🌲 대표적인 자료 구조 트리(Tree) 트리구조는 성능도 좋고, 많이 사용하는 자료구조입니다. node라는 개념으로 1차원적인 리스트 라는 배열의 개념을 확장한 느낌이 드는 데요. node와 branch를 이용해서, 마치 나무가 뿌리를 내린듯한 구조로 탐색 알고리즘 구현을 위해 많이 사용됩니다. 트리(Tree) 관련 용어 정리 Node: 트리에서 데이터를 저장하는 기본 요소 (데이터와 다른 연결된 노드에 대한 Branch 정보 포함) Root Node: 트리 맨 위에 있는 노드 Level: 최상위 노드를 Level 0으로 하였을 때, 하위 Branch로 연결된 노..

APS 2022.10.04

[Python] Hash Table의 충돌 개선을 위한 SHA-1, SHA-256

학습 내용 Hash Table의 충돌을 개선하기 위한 공간 확대 SHA-1, SHA-256 을 사용하여 충돌을 개선하기 Hash 자료구조의 시간복잡도 계산해보기 📘 해쉬 테이블의 빈번한 충돌을 지우기 위한 방법 해쉬 테이블은 잘 활용하면 속도도 매우 빠르고, 효율적인 자료구조를 구축할 수 있습니다. 하지만 해쉬 테이블 내의 충돌에 대비하지 않으면 매우 비효율적으로 변할 수 있습니다. 충돌을 줄이기 위해서는 일반적으로 공간을 늘리는 방법과 안정적인 해쉬값을 생성하는 방법이 있습니다. 해쉬 함수 재정의 및 저장공간 확대 해쉬 테이블 내 충돌이 발생하는 이유는 구축방식에 따라 다르겠지만, 같은 주소값을 가지는 값들이 서로 충돌하여 발생하는 문제가 큽니다. 따라서 일반적으로는 해쉬 테이블의 공간을 충분히 확보하..

APS 2022.10.04

[Swift] 문자열 String 속성과 관련 함수, 연산자 정리

학습 내용 Swift에서 String의 속성 알기 String 관련 함수 알기 String의 속성을 이해하고 관련 연산자 알기 🎰 Swift에서의 문자열 String Swift에서 문자열은 다른 개발언어와 유사하게 쓰이지만 신선한(?) 함수들이 있습니다. 최근 업무를 위해 JAVA를 많이 쓰고 있는데, 문자열을 다루다 보면 필요한 메소드들을 직접 구현해야하는 번거로움이 있었습니다. Swift에서는 그런점을 고려한건지, String관련 다양한 내장 함수들이 있어 정리하면서, '이런 게 정의되어 있다고..?' 하면서 신기한 부분들도 있었습니다. String 표기 방식 보통 큰따옴표("")를 이용해서 표현하고, 여러줄의 문자열은 (""" """)를 이용해 묶어서 표현 가능합니다. let some..

iOS_Dev 2022.10.04

[Swift] 기본 연산자, nil 병합 연산자 정리

학습 내용 Swift의 기본 연산자 정리 nil 병합 연산자 정리 🎈 Swift의 기본 연산자 Swift에서는 산술연산자(+, -, /, %)와 논리 연산자(&&, ||), 그리고 범위 연산자(a.., =, b // false 삼항 조건 연산자 question ? answer1 : answer2 의 구조를 갖습니다. question이 참일경우 answer1, 거짓일 경우 answer2 가 실행됩니다. let contentHeight = 40 let hasHeader = true let rowHeight = contentHeight + (hasHeader ? 50:20) // rowHeight는 90 (40 + 50) nill 병합 연산자 nil 병합 연산자는 a ?? b 형태를 갖는 연산자입니다. 옵셔널..

iOS_Dev 2022.10.01

[Swift] Object-C와 다른 언어인 Swift에 대하여

학습내용 Swift의 특징에 대한 이해 Swift의 주석달기 Swift 예약어 알아보기 🕊 Swift는 어떤 언어인가? Swift는 2014년 애플이 발표한 신규 프로그래밍 언어입니다. Apple에서 iOS 앱 개발에 Objective-C를 사용하다가 Swift를 개발하여 적용 하였습니다. “Objective without C” → C언어 라이브러리 및 프레임워크와 호환되지만, C언어를 기반으로 하지 않습니다. 배우고 이해하기 매우 쉬운 언어 구조로 되어 있습니다. 📌 Swift의 대표적 특징 정리 가독성 및 유지관리 Object-C 보다 Swift 언어가 선호되는 가장 큰 이유. 초보자도 코드를 쉽게 배울 수 있고, 작성하기 간단함. 코드가 적어 Swift 언어는 간결하고 광범위하게 재사용할 수 있음...

iOS_Dev 2022.10.01

[Python] Hash Table에 Linear Probing 기법 적용하기

학습내용 Hash Table의 단점 중 하나인 충돌 문제를 Linear Probing 기법으로 해결하기 제한된 Hash Table의 저장공간 활용하기 🧨 저장공간 충돌을 막아주는 Linear Probing 기법 해쉬 테이블 자료구조를 사용하다 보면, 같은 주소값을 가진 데이터들로 인해 충돌문제가 발생하곤 합니다. 이때 Chaining 기법을 활용해서 저장공간 외의 공간을 활용할 수 도 있는 데요. 상황에 따라 한정된 저장 공간이 주어진 상황속에서는 Linear Probing 기법을 적용할 수 있습니다. Linear Probing 기법은 '폐쇄 해싱' 또는 'Close Hashing' 기법 중 하나로, 충돌이 일어나면 해당 hash address의 다음 address부터 순회를..

APS 2022.09.27

[Swift] Assert와 Guard 사용법 정리

학습내용 디버깅 중에 조건을 검증해주는 Assert if문과 유사하게 조건을 걸어주는 Guard 🔐 Assert와 Guard는 무엇인가 Swift의 특별한 기본함수라고 할 수 있는 Assert와 Guard는 이름만 들으면 낯설게 느껴집니다. 하지만 잘 사용 하면 개발자에게 정말 유용한 도구이고, 좀 더 다양해진 If문(?) 처럼 느껴지기도 합니다. Assert Assert는 특정 조건을 체크하고, 해당 조건이 성립되지 않으면 error 메세지를 띄워 줍니다. 디버깅 모드에서만 동작하며, 주로 디버깅 중 조건의 검증을 위해 사용합니다. 조건이 성립되지 않을 때, Terminal 에서 runtime error를 발생시키고, 작성했던 메세지를 나타내주어 어느 부분에서 에러가 났는 지 찾기 쉽게 도와줍니다. v..

iOS_Dev 2022.09.27

[JAVA] 객체 자신을 가리키는 this 개념 및 사용법

학습내용 this의 의미와 사용 방법 및 주의사항을 알아보자 👈 This의 역할 Java에서 This는 인스턴스 객체 자신의 메모리를 가리킵니다. C++에서도 사용되는 this는 멤버 변수를 가리킬 때 사용하기도 하지만, 객체를 생성할 때도 사용됩니다. 특히 default Constructor 에서 기존의 생성자를 this를 활용하여 코드를 또 작성하지 않고 생성할 수 있습니다. 생성자에서 또 다른 생성자를 호출할 때 주의사항 생성자는 객체가 생성 될 때 new 키워드를 사용해서 호출됩니다. this를 활용하면 같은 클래스 내라는 조건 하에 하나의 생성자에서 다른 생성자를 호출할 수 있습니다. 이러한 경우, 인스턴스 생성이 완전하지 않기 때문에 생성자 내의 첫 statement는 꼭 this() stat..

JAVA_SPRING 2022.09.26

[JAVA] 캡슐화(Encapsulation)에 대해서

학습내용 캡슐화의 개념과 사용하는 이유 알기 💊 의도적으로 정보를 제어하는 캡슐화 접근 제어 지시자를 활용한 '정보 은닉'이라는 개념이은 JAVA의 문법 하나의 개념이었습니다. 캡슐화는 개발자가 의도적으로 접근제어 지시자를 활용하여 변수 속성이나, 메서드의 공개여부를 컨트롤 하는 것을 의미합니다. 🎈 캡슐화를 해야 하는 이유 클래스에서 필요한 정보만 공개하여 Client의 불필요한 접근을 제한. 클래스의 기능을 구현하는 데 필요한 변수나 메서드는 비공개하고, 통합된 인터페이스로 외부에 제공. 에러나 오류가 발생했을 때 제공한 인터페이스만 확인하면 되어 디버깅 편리. 레포트 만들기 예제 코드 MakeReport StringBuffer를 사용해서 Report를 지정한 양식대로 그려주는 Clas..

JAVA_SPRING 2022.09.24

[JAVA] 접근 제어 지시자_정보 은닉 정리

학습내용 JAVA의 접근 제어지시자의 유형과 종류를 파악한다.(private < default < protected < public) 정보 은닉의 개념과 private를 권장하는 이유를 이해한다. 📒 접근 제어 지시자 (Access Modifier) 접근 제어 지시자는 변수를 보호하고, 외부에서 변수를 더 잘 사용하 수 있게 하기 위해 사용합니다. JAVA의 접근제어 지시자는 총 4개가 있고, 필요에 따라서 적절하게 변수의 접근 범위를 지정해줍니다. 클래스 접근 지정자 📌 public 클래스 패키지에 상관 없이 다른 어떤 클래스에서도 사용 가능. public class World {}📌 default 클래스 접근지정자 없이 설정한 클래스로, 같은 패키지 내에서만 사용이 허용. class Local {}멤..

JAVA_SPRING 2022.09.22

[SWEA] 1926. 간단한 369 게임

 간단하다고 하지만 생각보다 간단하지 않은 369게임 주어진 숫자를 가지고 map, split, list 함수들을 사용해서 range로 늘어뜨리고, 그 중에서 3, 6, 9가 들어가면 '-' 를 출력하는 문제. python의 문자열, 숫자, 리스트를 잘 다룬다면 쉽게 풀 수 있는 문제인 것 같다. 과거의 나는 숫자로 100의 자리 10의 자리 1의 자리를 구분해서 3, 6, 9를 체크한 후, 해당하는 만큼 '-' 를 출력해서 풀었던 것 같다. 하지만 이번에는 문자열을 list로 split 하여 체크한 후에 포함하는 만큼 개수를 카운팅해서 '-'를 출력 해 보았다. 📌 학습한 내용 1. 문자열에 list함수를 사용하면 단어 단위로 쪼개어 져서 리스트를 형성한다. 2. elif 함수를 사용하면 조건에 맞게..

SWEA 2022.01.02

[SWEA] 1859.백만장자 프로젝트

미래를 보는 원재의 시세차익을 계산해 주는 문제. 처음 문제를 보고 N의 의미가 N개마다 끊어서 미래를 볼 수 있는 줄 알고, N개씩의 시세차익을 합치는 코드를 짰다. 하지만 계속해서 Fail을 당한 후 다시 문제를 꼼꼼히 검토했고, 리스트의 시세차익을 계산해 주는 calPrice() 클래스를 만들어 TestCase마다 시세차익을 계산하는 알고리즘을 구성했다. 📌 학습한 내용 1. 문제를 꼼꼼히 잘 읽어보자. 2. 클래스를 만들어서 사용하면 매우 편리하다. 3. 앞에서부터 했을 때 막히면, 반대로 생각하는 지혜를 가지기! TC = int(input()) def calPrice(Days): MaxNum = Day[-1] # 맨 뒤의 숫자부터 크기 비교 Day.reverse() # 역순으로 바꾼 후 탐색 V..

SWEA 2022.01.01

[TS] TypeScript Type 별칭(Type Alias)

📘 타입 별칭 (Type Alias) Interface 랑 비슷해 보입니다. Primitive, Union Type, Tuple, Function 기타 직접 작성해야하는 타입을다른 이름을 지정할 수 있습니다. 만들어지 타입의 refer(별명)로 사용하는 것이지 타입을 만드는 것은 아닙니다. Aliasing Primitive type MyStringType = string; const str = 'world'; let myStr: MyStringType = 'hello'; // 같은 형식이기 때문에 같음 myStr = str; Aliasing Union Type let person: string | number = 0; person = 'Mark'; type St..

TypeScript 2021.09.02

[TS] TypeScript 타입 호환성(Type Compatibility) 정리

서브타입 1 // sub1 타입은 sup1 타입의 서브 타입이다. let sub1: 1 = 1; let sup1: number = sub1; sub1 = sup1; // error! Type 'number' is not assignable to type'1'. // sub2 타입은 sup2 타입의 서브타입이다. let sub2: number[] = [1]; let sup2: object = sub2; sub2 = sup2 // error! Type '{}' is missing the following properites form type // 'number[]': length, pop, push, concat, and 16 more // sub 3..

TypeScript 2021.09.02

[TS] TypeScript 타입체계 | noImplicityAny | strictNullChecks

📘 타입스크립트 타입시스템에 대한 이해 타입 시스템 컴파일러에게 사용하는 타입을 명시적으로 지정하는 시스템 컴파일러가 자동으로 타입을 추론하는 시스템 타입스크립트의 타입 시스템 타입을 명시적으로 지정할 수 있다. 타입을 명시적으로 지정하지 않으면, 타입 스크립트 컴파일러가 자동으로 타입을 추론 자신의 코드에서 해당 함수를 사용하는 사용자 vs 해당 함수를 구현하는 구현자 타입이란 해당 변수가 할 수 있는 일을 결정합니다. 함수 사용법에 대한 오해를 야기하는 자바스크립트 // JavaScript // (f2 실행의 결과가 NaN 을 의도한 것이 아니라면) // 이 함수의 작성자는 매개변수 a 가 number타입이라는 가정으로 함수를 작성했습니다. function f2(a) { return a * 38; }..

TypeScript 2021.09.01

[TS] TypeScript Basic Types 정리

기본 프로젝트 생성 후 아래 타입 실습! // package.json 생성 npm init -y // 개발용으로 TS 설치 npm i typescript -D // 프로젝트 루트경로에 tsconfig.json 파일이 생긴 것. npx tsc --init // tsconfig.json에서 이부분 확인하기. "strict": true, // JS로 컴파일 npx tsc // 파일 실행 noe [파일명] Boolean let isDone: boolean = false; isDone = true; console.log(typeof isDone) // boolean // 아래와 같이 리터럴로 직접 primitive타입을 사용하는 것이 일반적.. let isOk: Boolean = true; // 잘못된 사례 le..

TypeScript 2021.08.31

[TS] TypeScript 자료형_Primitive Types

📘 TypeScript와 JavaScript 비교 Static Types(ts) set during development function add(n1: number. n2:number) { return n1 + n2; } const result = add(39, 28); Dynamic Types(js) resolved at runtime function add(n1, n2) { if (typeof n1 !== 'number' || typeof n2 !== 'number') { throw new Error('Incorrect input!'); } return n1 + n2; } const result = add(39, 28); 프로그램이 유용하려면, 가장 간단한 데이터 단위로 작업 할 수 있어야 합니다. ..

TypeScript 2021.08.30

[TS] TypeScript _ VS CODE 설치 및 설정

📘 VS Code 설치 및 설정 Visual Studio Code TypeScript Compiler VS Code에 컴파일러가 내장되어 있다. 내장된 컴파일러 버전은 VS code가 업데이트 되면서 올라간다. 그래서 컴파일러 버전과 VS code의 버전은 상관관계가 있다. 내장된 컴파일러를 선택할 수 있고, 직접 설치한 컴파일러를 선택할 수 도 있다. npm init -y # 개발용 TS 설치 npm i typescript -D 📘 First Type Annotation TypeScript의 고유기능 Type이라는 요소가 프로그래밍에 들어남 // Type Annotation : 변수의 타입을 지정해줌. let a = 'Mark'; // a는 문자가 최초로 입력되었기 때문에 타입이 문자열로 지정됨. le..

TypeScript 2021.08.28

[JS] JavaScript 정규표현식 메소드,표현 정리

📝정규표현식이란? 정규 표현식은 문자열에 나타는 특정 문자 조합과 대응시키기 위해 사용되는 패턴입니다. 자바스크립트에서, 정규 표현식 또한 객체입니다. 이 패턴들은 RegExp의 exec 메소드와 test 메소드 그리고 String의 match메소드 , replace메소드 , search메소드 , split 메소드와 함께 쓰입니다 . 정규 표현식 - JavaScript | MDN 정규 표현식은 문자열에 나타는 특정 문자 조합과 대응시키기 위해 사용되는 패턴입니다. 자바스크립트에서, 정규 표현식 또한 객체입니다. 이 패턴들은 RegExp의 exec 메소드와 test 메소드 , developer.mozilla.org 정규표현식, 이렇게 시작하자! 매일 쓰는 것도, 가독성이 좋은 것도 아니지만, 모르면 안되는..

JavaScript 2021.08.23

[JS] JavaScript | Axios | OMDB API로 영화데이터 가져오기

📒 OMDB API란? OMDb API는 영화 정보를 얻기 위한 RESTful 웹 서비스이며 사이트의 모든 콘텐츠와 이미지는 사용자가 제공하고 유지 관리합니다. 📒 사용방법 Usage Send all data requests to : http://www.omdbapi.com/?apikey=[yourkey]& Poster API requests: http://img.omdbapi.com/?apikey=[yourkey]& 📒 Query String Query : 검색 String : 문자 데이터 주소?속성=값&속성=값&속성=값 📒 Axios로 가져오기 Promise based HTTP client for the browser and node.js ⇒ HTTP요청을 처리해주는 JS 패키지 OMDb API - ..

JavaScript 2021.08.11

[JS] JavaScript localStorage 활용하기

💼 localStorage란? localStorage 읽기 전용 속성을 사용하면 Document 출처의 Storage 객체에 접근할 수 있습니다. 저장한 데이터는 브라우저 세션 간에 공유됩니다. Application ⇒ Storage localStorage : 데이터를 반영구적으로 사용가능 sessionStorage: 페이지를 닫을 때 데이터가 지워짐. Window.localStorage - Web API | MDN localStorage 읽기 전용 속성을 사용하면 Document 출처의 Storage 객체에 접근할 수 있습니다. 저장한 데이터는 브라우저 세션 간에 공유됩니다. developer.mozilla.org localStorage.setItem('myCat', 'Tom'); const cat =..

JavaScript 2021.08.10

[JS] JavaScript JSON 활용방법

🧀 JSON이란? JSON (제이슨[1], JavaScript Object Notation)은 속성-값 쌍 ( attribute–value pairs and array data types (or any other serializable value)) 또는 "키-값 쌍"으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷이다. 속성-값 쌍 브라우저/서버통신 (AJAX) 서버와의 통신에서 데이터를 주고 받는 포맷 JSON의 공식 미디어 타입은 applicaiton/json 이며 JSON의 확장자는 .json https://ko.wikipedia.org/wiki/JSON JSON - 위키백과, 우리 모두의 백과사전 JSON(제이슨[1], JavaScript O..

JavaScript 2021.08.09

[JS] JavaScript _ Import, Export 정리

🎁 JavaScript의 데이터 연결 Import : 가져오기 Default export : 내보내기1, 이름 지정 필요 X 하나의 파일에서 하나의 데이터만 내보낼 수 있음. Named export : 내보내기2 , 이름 지정 ⇒ import 할때 {} 사용 여러 데이터를 내보낼 수 있음. // main.js import {random, user} from './getRandom' // getRandom.js // getRandom.js // 이름이 필요한 통로 // 여러 데이터를 내보낼 수 있음. export function random() { return Math.floor(Math.random() * 10) } export const user = { name: 'HEROPY', age: 85 } 모..

JavaScript 2021.07.26

[JS] JavaScript 얕은 복사와 깊은 복사

✏️ 얕은 복사 Shallow Copy const copyUser = Object.assign({}, user) // 복사 : .assign(대상객체, 출처객체) ✏️ 깊은 복사 Deep Copy const copyUser = {...user} // 전개 연산자를 사용하여 복사. 깊은 복사 : lodash 사용 (.cloneDeep) Lodash Documentation _(value) source Creates a lodash object which wraps value to enable implicit method chain sequences. Methods that operate on and return arrays, collections, and functions can be chained tog..

JavaScript 2021.07.25

[JS] JavaScript 원시형 데이터 불변성 정리

🍋 JS 불변성 데이터 불변성 (Immutability) 원시형 데이터 : 불변, (String, Number, Boolean, undefined, null) 참조형 데이터 : 가변, (Object, Array, Function) 원시 값 - 용어 사전 | MDN JavaScript에서 원시 값(primitive, 또는 원시 자료형)이란 객체가 아니면서 메서드도 가지지 않는 데이터입니다. 원시 값에는 7종류, string, number (en-US), bigint (en-US), boolean, undefined, symbol, 그리고 null이 developer.mozilla.org JavaScript에서 원시 값(primitive, 또는 원시 자료형)이란 객체가 아니면서 메서드도 가지지 않는 데이터입..

JavaScript 2021.07.24

[JS] JavaScript 전개 연산자(Spread) 정리

📒 JS 전개 구문 전개 구문을 사용하면 배열이나 문자열과 같이 반복 가능한 문자를 0개 이상의 인수 (함수로 호출할 경우) 또는 요소 (배열 리터럴의 경우)로 확장하여, 0개 이상의 키-값의 쌍으로 객체로 확장시킬 수 있습니다. 전개 구문 | MDN 전개 구문을 사용하면 배열이나 문자열과 같이 반복 가능한 문자를 0개 이상의 인수 (함수로 호출할 경우) 또는 요소 (배열 리터럴의 경우)로 확장하여, 0개 이상의 키-값의 쌍으로 객체로 확장시 developer.mozilla.org // 전개 연산자 (Spread) const fruits = ['Apple', 'Banana', 'Cherry', 'Orange'] // 배열 데이터 console.log(fruits) // ... : 전개 연산자 : 하나의 ..

JavaScript 2021.07.23

[JS] JavaScript 구조분해할당 정리

📒 JS 구조 분해할당 (Destructuring assignment) 구조 분해 할당 구문은 배열이나 객체의 속성을 해체하여 그 값을 개별 변수에 담을 수 있게 하는 JavaScript 표현식입니다. 구조 분해 할당 | MDN 구조 분해 할당 구문은 배열이나 객체의 속성을 해체하여 그 값을 개별 변수에 담을 수 있게 하는 JavaScript 표현식입니다. developer.mozilla.org 📒 비구조화 할당 const user = { name: 'Heropy', age: 85, email: 'thesecon@gmail.com', address: 'USA' } // 객체 데이터는 이름으로 구조분해. // 기본값이 비어있다면 지정해줄 수 있음. address = "Korea" // name이라는 변수를..

JavaScript 2021.07.23
728x90
728x90