본문 바로가기

전체 글9

SOLID 원칙 로버트 마틴이 정리한 좋은 객체지향 설계의 5가지 원칙을 정리한것 SRP 단일 책임 원칙 (Single Responsibility Principle) OCP 개방-폐쇄 원칙 (Open/Closed Principle) LSP 리스코프 치환 원칙 ((Liskov Substitution Principle) ISP 인터페이스 분리 원칙 (Interface Segregation Principle) DIP 의존관계 역전 원칙 (Dependency Inversion Principle) 1. SRP 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다 2. OCP 개방-폐쇄 원칙 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다 3. LSP 리스코프 치환 원칙 프로그램의 객체는 프로그램의 정확성을 깨.. 2021. 9. 30.
람다식 @FunctionalInterface public interface Calculator { public int calculator(int num1, int num2); //public int calculator(int num1); //public void calculator(); } // 1. (매개변수 타입) -> {}; Calculator cal1 = (int num1, int num2) -> {return num1 + num2;}; // 2. 매개변수가 1개 or 2개이상의 매개변수 타입이 모두 같을 때 => 매개변수 타입 생략 가능 Calculator cal2 = (num1, num2) -> {return num1 + num2;}; // 3. 매개변수가 없는 경우 Calculator cal3 = .. 2021. 9. 17.
Java Garbage Collection 작동원리 Stack 에서 Heap에 도달하지 않는 Object를 찾는다 Mark : GC가 Stack의 모든 변수를 스캔하면서 어떤 객체를 참조하고 있는지 찾는 과정 Sweep : Mark가 되어있지 않은 Object를 Heap에서 제거 Mark and Sweep Garbage가 아닌것들을 Mark 하고 그 이외의 것들을 제거한다 GC 는 크게 2개의 영역으로 이루어짐 (Young, Old) Young 영역 : Young은 3개의 영역으로 이루어져 있다 Eden, Survivor1, Survivor2 1. 새로생성된 객체의 대부분은 Eden 영역에 위치한다 2. Eden영역에서 GC가 한번 발생한 후(Minor GC) 살아남은 객체들은 Survivor1 영역으로 이동. 3. Survivor1 영역이 가득 차면 거.. 2021. 9. 14.
중복문자 제거 String str = "aaabbccd"; String answer = ""; for(int i = 0; i 2021. 9. 1.
프로그래머스 > 해시 > 완주하지 못한 선수 import java.util.HashMap; class Solution { public String solution(String[] participant, String[] completion) { String answer = ""; HashMap map = new HashMap(); for(String str : participant) { map.put(str, map.getOrDefault(str, 0) + 1); } for(String str : completion) { map.put(str, map.getOrDefault(str, 0) + 1); } for(String str : map.keySet()) { if(map.get(str) % 2 != 0) { answer = str; } } retu.. 2021. 8. 27.
숫자 천단위 마다 콤마 붙이기 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); StringBuilder sb = new StringBuilder(); int length = sc.nextInt(); int n = sc.nextInt(); String num = Integer.toString(n); String[] numArr = new String[length]; int count = 1; for(int i = length - 1; i >= 0; i --) { if(count%3 == 0 && length > 3 && i != 0) { numArr[i] = ",".. 2021. 8. 23.
단어 뒤집기 ArrayList anwer = new ArrayList(); for(String x : strArr) { String temp = new StringBuilder(x).reverse().toString(); anwer.add(temp); } return anwer; String 문자열을 입력받는다(코드생략) 2021. 8. 12.
대소문자 변환하기 String answer = ""; /* A = 65 Z = 90 a = 97 z = 122 65 + 32 = 97 90 + 32 = 122 */ for(char x : str.toCharArray()) { if(x >= 97 && x 2021. 8. 11.