[Java] 객체 지향 프로그래밍 - 다형성(Polymorphism)
·
Language/Java
1️⃣ 데이터 은닉과 보호 (Encapsulation)정보를 보호하기 위한 대책변수는 private 접근으로 막기public은 모두에게 열려있기 때문에 누군가 정보를 바꿀 수 있다private은 같은 클래스 안에서만 쓸 수 있다공개되는 메서드를 통한 접근 통로 마련: setter / getter메서드에 정보 보호 로직 작성 🔹 객체의 생성 제어여러 개의 객체가 필요 없는 경우객체를 구별할 필요가 없는 경우 = 수정 가능한 멤버 변수가 없고 기능만 있는 경우이런 객체를 stateless한 객체라고 한다.객체를 계속 생성/삭제하는데 많은 비용이 들어서 재사용이 유리한 경우 🔹 Singleton 디자인 패턴외부에서 생성자에 접근 금지 → 생성자의 접근 제한자를 private으로 설정내부에서는 private..
[Java] 객체 지향 프로그래밍 - 상속(Inheritance)
·
Language/Java
1️⃣ 상속 (Inheritance)기존(상위) 클래스의 자신(멤버)을 자식(하위) 클래스에서 재사용하기 위한 것상위 클래스의 생성자와 초기화 블록은 상속하지 않는다상위 클래스의 멤버를 물려 받기 때문에 코드의 절감상위 클래스의 코드를 변경하면 모든 하위 클래스들에게도 적용 → 유지보수성 향상상속의 적용extends 키워드 사용 조상 클래스(= 상위 클래스, 슈퍼 클래스) → 자식 클래스(= 하위 클래스, 서브 클래스) 🔹 Object 클래스모든 클래스의 조상 클래스별도의 extends 선언이 없는 클래스들은 extends Object가 생략됨모든 클래스에는 Object 클래스에 정의된 메서드가 있음 🔹 다양한 상속 관계상속의 관계는 is a (kind of) 관계라고 함ex) Person is a ..
[Java] 객체 지향 프로그래밍 - 추상화(Abstraction)
·
Language/Java
OOP is APIE객체 지향 프로그래밍(OOP, Object-oriented programming)Abstraction(추상화): 현실의 객체를 추상화해서 클래스를 구성한다.Polymorphism(다형성): 하나의 객체를 여러 가지 타입(형)으로 참조할 수 있다.Inheritance(상속): 부모 클래스의 자산을 물려받아 자식을 정의함으로 코드의 재사용이 가능하다.Encapsulation(데이터 은닉과 보호): 데이터를 외부에 직접 노출시키지 않고 메서드를 이용해 보호할 수 있다. 1️⃣ 객체 지향 프로그래밍객체주변의 많은 것들을 객체화해서 프로그래밍하는 것우리 주변의 있는 모든 것으로 프로그래밍의 대상 (사물, 개념, 논리..)객체 지향 프로그래밍주변의 많은 것들을 객체화해서 프로그래밍하는 것 🔹..
[Java] 자바 기본 문법 총정리
·
Language/Java
1️⃣ 변수자료를 저장하기 위한 메모리 공간타입에 따라 크기가 달라짐메모리 공간에 값(value)을 할당(assign) 후 사용 🔹 변수의 타입기본형 (primitive type)미리 정해진 크기의 데이터 표현변수 자체에 값 저장참조형 (reference type)크기가 미리 정해질 수 없는 데이터의 표현변수에는 실제 값을 참조할 수 있는 주소만 저장기본형 8개 빼고는 다 참조형임 🔹 기본형의 크기파란색의 의미정수형에서는 int가 기본, 실수형에서는 double이 기본이다byte는 8bit인데 왜 2^7까지만 처리하지?8칸 중에 맨 앞 칸은 부호 비트이기 때문이다정수 계산 시 overflow 주의필요한 수의 크기를 고려해서 int 또는 long 등 타입 선택 실수의 연산은 정확하지 않다부동소수점 정밀..
[Python] 백준/BOJ 19622번: 회의실 배정 3 (Silver 2)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 서준이는 아빠로부터 N개의 회의와 하나의 회의실을 선물로 받았다. 각 회의는 시작 시간, 끝나는 시간, 회의 인원이 주어지고 한 회의실에서 동시에 두 개 이상의 회의가 진행될 수 없다. 단, 회의는 한번 시작되면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작 시간은 끝나는 시간보다 항상 작다. N개의 회의를 회의실에 효율적으로 배정할 경우 회의를 진행할 수 있는 최대 인원을 구하자. 💡 Approach임의의 회의 K(1≤ K ≤ N)는 회의 K − 1과 회의 K + 1과는 회의 시간이 겹치고 다른 회의들과는 회의 시간이 겹치지 않는다.문제에서 이런 조건이 주어진다.어떤 한 회의는 이전 회의와 다음 회의와 겹친다.따라서..
[Next.js] installHook.js:1 Skipping auto-scroll behavior due to `position: sticky` or `position: fixed` on element
·
Trouble Shooting
🚨 문제 상황모달을 열면 console에 아래와 같은 에러가 떴다.installHook.js:1 Skipping auto-scroll behavior due to `position: sticky` or `position: fixed` on element: ​…​​overrideMethod @ installHook.js:1shouldSkipElement @ layout-router.tsx:139InnerScrollAndFocusHandler.handlePotentialScroll @ layout-router.tsx:227componentDidMount @ layout-router.tsx:294react_stack_bottom_frame @ react-dom-client.development.js:2360..
[Python] 백준/BOJ 9047번: 6174 (Silver 5)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 1949 년 인도 수학자 Kaprekar는 Kaprekar 연산을 고안해 냈다. Kaprekar 연산은 네 자릿수 중 모든 자릿수가 같지 않은 수(1111, 2222 등을 제외한)의 각 자리의 숫자를 재배열해서 만들 수 있는 가장 큰 수와 가장 작은 수를 만들어서 그 차이를 계산하는데, 그 결과로 나온 새로운 숫자를 갖고 같은 과정을 반복하는 것이다. 간단한 연산이지만 Kaprekar는 이 연산이 놀라운 결과를 보여준다는 것을 발견했다. 올해 연도인 2008로 그 결과를 알아보자. 2008로 만들 수 있는 가장 큰 수는 8200이고 가장 작은 수는 0028이다. 8200 – 0028 = 8172 8721 – 1278 = 7443 7443 – 3447 = 3996 9963..
Optimistic Update 방식으로 좋아요 버튼 구현하기 (TanStack Query)
·
Next.js
현재 하고 있는 프로젝트에서 좋아요 버튼을 구현하려고 한다. 🧩 요구사항게임 목록 페이지에서 특정 게임 카드를 클릭하면 이러한 게임 상세 모달이 뜨는 구조이다. API 응답받은 좋아요 여부에 따라 isLiked가 true면 채워진 좋아요 아이콘을, false면 비워진 좋아요 아이콘을 띄운다. 이런 식으로.. 좋아요 버튼 옆에는 좋아요 개수도 같이 표시한다. 🚀 옵티미스틱 업데이트(Optimistic Update) 방식원래 그냥 구현하면 좋아요 버튼을 클릭하면 → 백엔드에 요청을 보내고 → 응답이 성공하면 업데이트하는 방식이다.모르는 정보들을 불러오는 것도 아니고 그저 좋아요 on/off인데 응답이 올 때까지 기다려야 하면 사용자 입장에서 답답할 수 있다.Optimistic Update 방식은 백엔드..