2025/02 13

오버로딩(Overloading)과 오버라이딩(Overriding)

객체지향 프로그래밍(OOP)에서 자주 등장하는 개념 중 하나가 오버로딩과 오버라이딩이다.두 개념은 이름이 비슷해서 헷갈리기 쉬운데 개념적으로 큰 차이가 있다. 이번에는 오버로딩과 오버라이딩의 차이를 명확하게 이해하는 시간을 가져보도록 하겠다. 오버로딩(Overloading)이란?오버로딩은 같은 이름의 메서드를 여러 개 정의할 수 있도록 하는 기능이다.단, 매개변수의 개수 또는 타입이 달라야한다. 즉, 같은 이름을 가진 메서드라도 전달하는 인자가 다르면 서로 다른 메서드로 취급된다는 소리이다. 오버로딩의 특징같은 클래스 내에서 메서드 이름을 동일하게 정의할 수 있다.매개변수의 개수, 타입, 순서가 다를 경우 허용된다.반환 타입은 오버로딩과 관계가 없다. class MathUtils { // 두 개의 ..

CS 2025.02.25

싱글톤 패턴(Singleton Pattern)

싱글톤 패턴이란 무엇일까?싱글톤 패턴(Singleton Pattern)은 객체의 인스턴스를 하나만생성하고, 이를 프로그램 전체에서 공유하도록 설계하는 디자인 패턴이다. 이는 글로벌 상태를 유지해야 하는 경우에 유용하며, 특히 설정,로그, 데이터베이스 연결관리, 스레드 풀 등에서 널리 사용된다. 싱글톤 패턴의 특징단일 인스턴스 : 클래스의 인스턴스가 하나만 생성되도록 보장.전역 접근 가능 : 프로그램 내 어디에서든 동일한 인스턴스를 호출할 수 있음.메모리 절약 : 불필요한 객체 생성을 방지하여 성능을 향상.멀티스레드 환경에서 동기화 문제 고려 필요 : 여러 스레드에서 동시에 접근할 경우 동기화 문제를 해결해야 한다. 싱글톤 패턴의 구현 방법1) Eager Initialization (이른 초기화)publi..

CS 2025.02.25

Connection, Connectionless

Connection(연결)서버는 클라이언트와 연결을 유지하기 위해서 자원을 소모한다.하지만, 수많은 사람들이 서비스를 이용해도 실제 서버에서 동시처리하는 요청은 작다.클라이언트 2,3이 아무런 요청이 없어도 일단 연결을 유지한다.Connection의 장단점장점 ✅새로운 연결 과정을 거치지 않아도 된다.그만큼 요청에 대한 응답 속도가 빨라진다.단점 ❌ 클라이언트가 지속적으로 요청을 보낼 거라는 보장이 없다.즉, 연결을 위한 자원이 낭비된다. Connectionless(비연결)클라이언트와 서버는 연결을 유지하지 않는다.서버는 최소한의 자원만을 사용한다.ex > 브라우저가 켜진 상태에서 인터넷이 종료되어도 홈페이지가 정상적으로 노출된다. Connectionless의 장단점장점 ✅서버 자원을 효율적으로 사용할 ..

컴퓨터 용어 2025.02.24

프렌즈 4블록

프렌즈 4블록 풀어보기 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr이번 문제는 2018 KAKAOBLIND 문제인 프렌즈4블록 문제이다.  카카오프렌즈 블록이 2X2의 형태로 4개가 붙어있는경우 해당 블록들이 사라지며 점수를 얻는 게임이라 한다.자세한 내용은 문제를 한번 읽어보길 바란다. 가장 먼저 실행한 것은 이차원 배열을 만들어 주는 것이었다. (a,b)처럼 특정 위치의 값을 바꾸거나 생성, 삭제를 위해 먼저 이차원 배열을 만들었다. 크기는 m x n 으로 문제에서 주어진다. 그렇다면 이렇게 만든 block에 어떻게 각각의 프렌즈 값들을 넣어야 할까?나는 toCharArray()라는 메서드를 이용..

코딩테스트 2025.02.24

Stateful, Stateless

오늘 알아볼 용어는 Stateful, Stateless이다.두 용어는 클라이언트와 서버간의 통신 상태(state)유지 여부에 따라 나뉘는 특성이다. Stateful(상태 유지)Stateful은 상태를 유지하는 시스템을 의미한다. 즉 클라이언트와 서버 간의 세션이 지속적으로 유지되며, 서버는 클라이언트의 이전 요청 정보를 기억하고 있는다. 이를 통해 사용자의 이전 작업을 기반으로 응답을 제공할 수 있다. ✅Stateful의 특징세션 유지 : 서버가 클라이언트의 상태를 저장하여 이후 요청에서 활용한다.연속성 제공 : 로그인 정보, 쇼핑 카트, 진행중인 트랜잭션 등을 유지할 수 있다.리소스 소모 : 클라이언트별로 세션 데이터를 저장해야 하므로 메모리와 저장 공간이 많이 필요하다.서버 장애 시 데이터 손실 가능..

컴퓨터 용어 2025.02.22

N개의 최소공배수

최소공배수 문제 풀러가기 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr이번 문제는 N개의 숫자가 주어졌을 때 해당 수들의 최소공배수를 구하는 문제이다.예를 들어 2,7의 최소공배수는 14라는것을 모두들 알 것이다. 해당 문제에서는 n개의 숫자가 담긴 int형 배열 arr이 제공된다.기존에 알고있던 공식을 이용하여 문제를 풀어보았다. ex > a,b라는 정수가 있는 경우(ab의 최소공배수 = a * b / a,b의 최대공약수)  의 공식을 이용하여 풀어낼 수 있다.하지만 이는 3개 이상의 수를 한번에 계산하는 방식으로는 옳지 못하다 판단하였다. 이에 해당하는 반례를 찾아보았다. {4,6,8} 이라는 값이..

코딩테스트 2025.02.22

JSON, Scale Up, Scale Out

JSON 이란?JSON은 클라이언트와 서버가 통신할 때 사용되는 데이터 양식이다. 클라이언트와 서버가 사용하는 언어 상관없이 통일된 데이터를 주고받을 수 있도록 만들어준다. ※ 과거 웹 초기부터 사용된 xml은 가독성이 떨어지고, 불필요한 용량이 단점으로 항상 지적받아왔다.-> 간결하고 통일된 양식으로 각광받고 있는 것이 바로 JSON이다. 요약JSON은 사람, 기계 모두 이해하기 쉬우며 용량이 작다.XML을 대체해서 데이터 전송 등에 많이 사용한다.마치 전세계 공통어로 영어를 사용하는 것처럼 Web의 세계에서는 JSON(Java Script Object Notation)을 공통어로 사용한다.  Scale Up, Scale Out은 무엇일까?서버의 성능을 향상하기 위한 두 가지 방법이다. 두 방법에는 약..

컴퓨터 용어 2025.02.21

방금 그곡

방금 그곡 풀어보러 가기 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr이번 문제는 2018년 KAKAO BLIND RECRUITMENT에서 나왔던 문제라고 한다. 방금 그곡이라는 문제이다.문제의 내용이나 조건 같은것은 직접한번 살펴보길 바란다.  일단 작성된 전체 코드는 이러하다public static String solution(String m, String[] musicinfos) { String answer = "(None)"; int maxPlayTime = 0; // 기억한 멜로디 변환 (C# -> H 등) m = convertSharpNotes(m); for (St..

코딩테스트 2025.02.21

프로그래밍 명명 규칙(Casing)

프로그래밍 세계에서는 각각의 언어, 환경에 맞는 명명 규칙이 존재한다.프로그래밍에서 일관된 명명 규칙을 따르는 것은 코드의 가독성을 높이고 유지보수를 용이하게 만드는 중요한 요소이다. 1. snake_casesnake_case는 각 단어를 _(언더바)로 연결하여 작성하는 방식이다.Python이나 DB Table, Column에 사용된다.모든 단어는 소문자이거나 대문자이다.예시)user_name = "John Doe"  # 변수명get_user_data()  # 함수명  2. camelCasecamelCase는 첫 단어는 소문자로 시작하고, 이후 단어의 첫 글자를 대문자로 작성하는 방식이다.Java, JavaScript, TypeScript에서 변수, 함수, 메서드 이름을 작성할 때 사용된다.언더바 없이 ..

컴퓨터 용어 2025.02.20

피로도

피로도 문제 풀러가기 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 해당 문제는 완전 탐색을 요구하는 문제이다. 문제에서는 피로도 라는 시스템이 있고 던전을 탐험하기 위해서는 최소 필요 피로도가 있으며, 던전을 탐험하고 나면 보유 피로도에서 소모피로도 만큼의 피도로가 까이게 된다. 이러한 방식 속에서 주어지는 던전들을 최대한 많이 도는 방법을 찾아야 하므로 DFS와 백트래킹을 이용하여 해당 문제를 풀어보기로 하였다. 가장 먼저 해주어야 할 것은 전역으로 사용가능한 값들을 선언하는 것이다.static boolean[] visited; //방문 여부를 저장할 배열static int maxDungeonCou..

코딩테스트 2025.02.20