분류 전체보기 (31) 썸네일형 리스트형 LeetCode 2. Add Two Numbers 문제 요약: 2개의 Number형 자료구조(링크드리스트와 유사)가 주어졌을때, 각각의 원소를 더한 자료구조 (input과 같은)를 반환 하시오. 만약, 길이가 다르면 남는 원소 그대로 반환. 단 두자리수가 넘어가면 다음 링크드 리스트의 원소의 값에 1을 더한다. 예: input: 2 -> 4 -> 3 5 -> 6 -> 4 output: 7 -> 0 -> 8 input: 9 -> 9 -> 9 -> 9 -> 9 -> 9 9 -> 9 -> 9 output: 8 -> 9 -> 9 -> 0 -> 0 -> 0 -> 1 input: 2 -> 4 -> 9 5 -> 6 -> 4 -> 9 output: 7 -> 0 -> 4 -> 0 -> 1 문제 접근: 처음에는 input 각각 반복문으로 루프 하나가 진행될때마다 10의 .. LeetCode 338. Counting Bits 문제 요약: 숫자(input)가 주어졌을때, 1부터 주어진 숫자까지 각각 2진수로 변환했을때, 각각 1의 갯수를 배열로 반환 하시오. 예: input: 2 -> 정답: [0,1,1] input: 5 -> 정답: [0,1,1,2,1,2] 문제 접근: 단순하게 반복문을 돌면서, 각각의 숫자를 2진수로 변환해서 1의 갯수를 구하면되는데, 구글링중 2진수의 규칙을 쉽게 구현할 수 있을거 같아서, 그 원리를 코드로 구현했다. 더 효율적인 코드들이 있는거 같지만 이해하는데는 이게 제일 쉬운거 같아서 아래와 같이 구현했다. 2진수 규칙: 2의 제곱수다음 숫자는 다음 2의 제곱수가 오기 전까지, 현재의 제곱수에 1부터 더하는 규칙을 가지고 있다. 말로 쓰기 어려워서 아래와 같이 보면 이해하기 쉬울?수도 있다. 0 ->.. LeetCode 3.Longest Substring Without Repeating Characters 문제요약: 문자열(input)이 주어졌을때, 반복되는 문자(Character)없는 가장 긴 문자열의 길이를 반환 하시오. 예: input => abcabcbb 정답: 3 input => bbbbb 정답: 1 input => pwwkew 정답: 3 문제접근: 문자열을 처음부터 반복을하면서 똑같은 문자열을 만나기 전까지 루프를 돈다. 만약 반복된 문자열을 만나면 다음 루프로 넘어가고, 이전에 가장 긴 문자열과 비교해서 가장 긴 길이를 체크한다. 구현코드: 언어는 java 사용 import java.util.*; class Solution { public int lengthOfLongestSubstring(String input) { // 빈 문자열이면 그냥 0을 반환 if (input.equals("")) .. Throttle throttling 이란걸 가끔씩 볼 수 있는데, 헤깔리지 않기 위해 정리. 예1: 버튼을 한번 누른뒤, 개발자가 지정한 시간동안 계속 눌러도 요청을 보내지 않는다. 예2: Api 요청이 1000개 왔는데 서버에서는 Throttling 관련 설정을 500으로 해서 500까지만 처리하고 나머지 500개의 요청은 따로 처리 or 에러발생. Debounce 라는것도 있는데, Front에서, 검색어를 입력할때, Ajax 요청을 보낼경우, 키보드 하나하나 입력할때마다 보내는게 아니라 개발자가 지정한 시간동안 기다렸다가 지정한 시간 후에 요청을 보내는 기법. Backend에서는 사용하는곳은 아직 못봤다. Abstract VS Interface Abstract : 추상 클래스를 나타내는 키워드 이다. 추상클래스를 상속받아 기능을 확장하는데 주 목적이 있다. Interface : 인터페이스를 나타내는 키워드 이다. 인터페이스를 사용한다는것은 그 인터페이스에 주어진 메소드의 구현을 강제하여, 동일한 기능을 동작 시키는데 주 목적이 있다. 즉 특정 클래스가 추상클래스를 사용(상속)한다는것은 일종의 혜택을 부여하여 혜택 + 자신만의 기능확장을 한다고 볼 수 있고, 인터페이스를 사용(구현)한다는 것은, 특정 클래스에게 구현을 강제시켜 동일한 기능을 수행해야하는 책임을 부여한다고 볼 수 있다. JVM 정리 1. JVM - .java 파일을 컴파일한 결과물(.class)을 실행시키는 프로그램. 2. JVM 구조 - Heap - Method Area - Stack - Native Method Stack - PC Register 위에 나열한것 모두 각각 개별적인 영역이라고 이해하면 될 것 같고, Heap, Method Area는 JVM에 한개 존재하고, 나머지 (Stack, Native Method Stack, PC Register)는 Thread당 하나씩 존재한다. Heap 과 Method Area는 Thread간 공유가 가능하기 때문에, Thread Safe를 신경써서 코드를 작성해야 한다. 3. JVM 내부 구성요소들의 역할 - Heap 객체들이 new() 라는 키워드로 생성이되면 Heap영역에 존재한다고.. 2. Decorator Pattern 요약: 상황에 맞춰서 유연하게 객체를 생성하는 패턴. 기능 확장이 필요할때 고려해볼만한 패턴 중 하나이다. 샘플코드(Java) : 대표적인 예제 커피(음료)관련 코드이다. (커피의 추가 첨가물에 따라 가격이 동적으로 변하는 코드) public abstract class Beverage { public abstract int price (); } 제일 부모가 되는 클래스이다. 가격을 구하는 추상 메서드가 있다. public class Espresso extends Beverage { @Override public int price () { System.out.println("espresso price = 150"); return 150; } } 음료의 한 종류인 Espresso 클래스 이다. 기본 가격은 .. 1. Observer Pattern 요약: Observable 객체가 Observer 객체들에게 자신의 상태 변화가 있을때 알려주는 패턴, Observable 객체의 변화가 있을때, 직접 Observable 객체가 Observable 객체에 등록된 Observer 객체들에게 직접 알려주기 위해 설계된 패턴이다. 샘플 코드 : Observable (Youtube, AfreecaTV, Twitch... ), Observer (구독자) 인 상황으로 작성해봤다. (Java Code) public interface Observable { void subscribe(Observer observer); // 구독 void unsubscribe(Observer observer); // 구독 해제 void alarm(); // 알림 } Observable.. 이전 1 2 3 4 다음 목록 더보기