728x90
반응형

전체 글 91

[Java] OCP(Open/Closed Principle)

확장에는 열려있고 수정에는 닫혀 있어야 한다객체지향 설계 5대 원칙(SOLID)중 하나로 기존 코드를 수정하지 않고도 새 기능이나 요구사항을 추가할 수 있어야 한다는 개념이다.계산기 예제로 살펴보면좋지못한 설계class Calculator { public double calculate(double x, double y, String operator) { if (operator.equals("+")) return x + y; else if (operator.equals("-")) return x - y; else if (operator.equals("*")) return x * y; else if (operator.equals("/")) return ..

Dev./Java 2025.10.20

[Java] 덧칠하기

문제 설명어느 학교에 페인트가 칠해진 길이가 n미터인 벽이 있습니다. 벽에 동아리 · 학회 홍보나 회사 채용 공고 포스터 등을 게시하기 위해 테이프로 붙였다가 철거할 때 떼는 일이 많고 그 과정에서 페인트가 벗겨지곤 합니다. 페인트가 벗겨진 벽이 보기 흉해져 학교는 벽에 페인트를 덧칠하기로 했습니다.넓은 벽 전체에 페인트를 새로 칠하는 대신, 구역을 나누어 일부만 페인트를 새로 칠 함으로써 예산을 아끼려 합니다. 이를 위해 벽을 1미터 길이의 구역 n개로 나누고, 각 구역에 왼쪽부터 순서대로 1번부터 n번까지 번호를 붙였습니다. 그리고 페인트를 다시 칠해야 할 구역들을 정했습니다.벽에 페인트를 칠하는 롤러의 길이는 m미터이고, 롤러로 벽에 페인트를 한 번 칠하는 규칙은 다음과 같습니다.롤러가 벽에서 벗어..

알고리즘 2025.10.19

[Git] git cherry-pick 특정 커밋 가져오기

전체 브랜치를 합치지 않고 특정 커밋만 가져오고 싶을때 사용한다사용법사용전 내가 가져올 커밋의 ID를 가져와야 한다.#내가 원하는 다른 브랜치 커밋ID 확인git log --oneline --graph --all단일 커밋# 원하는 브랜치로 이동git checkout main# 특정 커밋을 cherry-pickgit cherry-pick 여러개의 커밋//여러개git cherry-pick //연속된 커밋 범위git cherry-pick ^..^.. - ID1부터 ID2까지 모든 커밋이 차례대로 적용 (ID1,ID2 모두 포함)커밋 메세지 수정하며 가져오기git cherry-pick -e -e 옵션: 메시지 편집 창 열기혹시 cherry-pick 끝났는데 커밋메세지를 수정하고 싶다면 git commit -..

Dev./Git 2025.10.18

[Java] Stack(스택) 자료구조

StackLIFO(Lasn In, First Out) 자료구조즉 마지막에 넣은 데이터가 가장 먼저 나오는 자료구조이다. 웹 브라우저 뒤로가기 히스토리 동작을 생각해보면 알 수 있다.Java의 Stackimport java.util.Stack;Stack stack = new Stack();메서드메서드설명push(E item)스택의 맨 뒤에 데이터 추가pop()스택의 맨 뒤 데이터 제거 후 반환peek()스택의 맨 뒤 데이터 확인 (제거X)Stack 클래스의 문제불필요하게 느림 (Thread-safe)모든 연산이 안전하게 스레드용으로 처리한 번에 한 스레드만 접근 가능하도록 락(lock)을 걸어서 동작하지만 대부분의 코드에서는 하나의 스레드만 사용하기 때문에 불필요예전 방식의 오래된 클래스다른 컬렉션들(Li..

Dev./Java 2025.10.17

[Error] 계산기 만들기 트러블 슈팅

기능 구상Level1. 클래스 없이 만드는 계산기양의 정수 2가지 , 사칙연산기호 한가지 입력양의정수는 각각 하나씩 입력, 정규식 검사 후 int 타입으로 변수에 저장사칙연산 기호는 char 타입으로 변수 저장연산 진행switch문을 사용해 각 연산자에 맞게 진행나눗셈 연산에서 두번째정수에 0이 입력될 경우 오류 출력exit 문자열 입력 전까지 계산 진행각각의 인풋값 입력단계에서도 exit 입력시 연산 끝낼 수 있도록 로직 작성각각의 계산이 종료될때도 exit 입력할 수 있도록 작성대소문자 관계없이 비교하는 String.equlsIgnoreCase를 발견해서 적용Level2. 객체 지향 계산기기능으로 클래스 분리 Calculator 클래스사칙연산 수행인풋값 입력시 검증 메소드결과값 반환, 연산 결과 리..

BootCamp 2025.10.17

[Java] 캡슐화

캡슐화객체의 상태(필드)를 숨기고(보호) 공개된 메서드로만 접근하게 해서 내부 구현을 바꾸더라도 외부에 영향이 없게 만드는 설계 원칙캡슐화의 목적 데이터 보호: 필드를 private으로 숨겨 잘못된 접근(무결성 훼손)을 막음인터페이스와 구현 분리: 외부는 무엇을 할 수 있는지(메서드)만 알고, 내부 구현은 바꿀 수 있음유지보수성 향상: 내부를 바꿔도 외부 코드는 그대로 작동응집도 증가 / 결합도 감소: 책임이 분명해지고 모듈화가 쉬워짐검증/비즈니스 로직 중앙화: 값 유효성 검사, 상태 변화 규칙을 한곳(setter/메서드)에 모을 수 있음적용 예제1. 필드를 private으로 선언내부 속성은 private으로 숨기고, 외부는 public 메서드를 통해 접근하게 함private int result;priv..

Dev./Java 2025.10.16

[Java] 인터페이스와 다형성

인터페이스인터페이스란 "이 클래스는 이러한 기능들을 반드시 가지고 있어야 해" 라는 규칙을 정해놓은 설명서 같은 개념이다. 클래스가 반드시 구현해야하는 메서드의 목록만 담겨있다.public interface RemoteControl { void turnOn(); void turnOff();}public class TV implements RemoteControl { public void turnOn() { System.out.println("TV를 켭니다"); } public void turnOff() { System.out.println("TV를 끕니다"); }}리모콘의 경우로 예시를 살펴보면 켜기/끄기 기능은 꼭 있어야 한다는 약속을 정한 것이..

Dev./Java 2025.10.15

[Java] 배열 만들기 4

문제 설명정수 배열 arr가 주어집니다. arr를 이용해 새로운 배열 stk를 만드려고 합니다.변수 i를 만들어 초기값을 0으로 설정한 후 i가 arr의 길이보다 작으면 다음 작업을 반복합니다.만약 stk가 빈 배열이라면 arr[i]를 stk에 추가하고 i에 1을 더합니다.stk에 원소가 있고, stk의 마지막 원소가 arr[i]보다 작으면 arr[i]를 stk의 뒤에 추가하고 i에 1을 더합니다.stk에 원소가 있는데 stk의 마지막 원소가 arr[i]보다 크거나 같으면 stk의 마지막 원소를 stk에서 제거합니다.위 작업을 마친 후 만들어진 stk를 return 하는 solution 함수를 완성해 주세요.Pseudo Code 초기화stk → 결과 배열idx → arr 순회 인덱스반복 조건idx 조건 ..

알고리즘 2025.10.15

[Java] Java 메서드(Method) 와 객체화

메서드(Method)기능 단위로 묶인 코드 블록입력(매개변수) -> 처리(작성된 로직) -> 출력(리턴값) 객체지향에서 객체의 행동을 정의한가지 기능만 수행반복되는 코드는 메서드로 분리기본 구조[접근제어자] [리턴타입] 메서드이름([매개변수]) { // 수행할 코드 return 값; // 리턴 필요 시}public int add(int a, int b) { return a + b;} 접근제어자: public, private, protected, 생략(default)리턴타입: 반환값 자료형, 없으면 voidpublic void printHello() { System.out.println("Hello!");}매개변수: 타입과 변수명 필수접근 제어자 범위public → 어디서나 ..

Dev./Java 2025.10.14
728x90
반응형