본문 바로가기

분류 전체보기

(107)
[프로그래머스] [1차] 캐시 (Java) 카테고리 로직 짜기 나만의 카테고리 상식 문제 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/17680
[Spring] 스프링 DI(Dependency Injection)은 어떻게 이루어지나 IoC (Inversion of Control) DI를 알아보기 전에 알아야 할 용어가 IoC입니다. IoC는 "제어의 역전"이라는 말로 메서드나 객체의 호출 작업을 개발자가 결정하는 것이 아니라 외부에서 결정되는 것을 의미합니다. 여기서 외부는 Spring Framework입니다. 기존에는 객체를 클래스 내부에서 생성하고 사용했지만 IoC를 적용하면 미리 생성해놓은 객체를 주입받아 사용하기만 하면 됩니다. 이를 통해 얻을 수 있는 장점은 아래와 같습니다. 제어의 역전의 장점 객체 간 결합도를 낮춘다 유연한 코드 작성 가능 가독성 증진 코드 중복 방지 유지 보수 용이 DI (Dependency Injection) 위에서 알아본 IoC에서 객체를 주입받아 사용한다고 했습니다. 바로 이것이 DI이죠. 즉, ..
[프로그래머스] 호텔 방 배정 (Java) 카테고리 재귀 나만의 카테고리 재귀, 효율적 풀이 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/64063 코딩테스트 연습 - 호텔 방 배정 programmers.co.kr 요점 같은 로직을 효율적인 방법으로 풀이하는 방법을 알아야한다. 참고 지식 재귀 풀이 (Java) import java.util.*; class Solution { Map roomMap = new HashMap(); public long[] solution(long k, long[] room_number) { int roomLength = room_number.length; long[] rooms = new long[roomLength]; for (int i = 0; i < ro..
[Java] Checked Exception, Unchecked Exception 1. Checked Exception, Unchecked Exception이란 자바로 열심히 코딩을 하다보면 여러가지 Exception(예외)들을 만납니다. 실무에서뿐만 아니라 코딩테스트를 풀다가도 자주 만나는 Exception으로는 NullPointException, ArrayIndexOutOfBoundsException 등이 있습니다. 그렇다면 앞의 두 예시는 어떤 상황에서 발생할까요? 보통은 컴파일 시에는 발생하지 않습니다. 그랬다면 이미 알고 수정했을겁니다. 그렇다면 실행도중에 발생한 예외일겁니다. 그럼 Runtime 시점에 발생했으니 RuntimeException일겁니다. 이것들은 우리가 프로젝트를 실행할 때는 전혀 문제가 없습니다. 그래서 굳이 에러가 발생할 상황이 만들어지지 않는다면 체크할 ..
[프로그래머스] 괄호 회전하기 (Java) 카테고리 자료구조 나만의 카테고리 자료구조 - Stack 문제 링크 programmers.co.kr/learn/courses/30/lessons/76502 코딩테스트 연습 - 괄호 회전하기 programmers.co.kr 요점 Stack을 사용하여 올바른 괄호를 판단하는 로직을 구현할 수 있다. 참고 지식 Java Stack 풀이 (Java) import java.util.*; class Solution { private int answer = 0; public int solution(String s) { Stack stack = new Stack(); for (int i = 0; i < s.length(); i++) { stack.clear(); s = s.substring(1, s.length()) ..
[프로그래머스] 징검다리 건너기 카테고리 이분 탐색 나만의 카테고리 이분 탐색 문제 링크 programmers.co.kr/learn/courses/30/lessons/64062 코딩테스트 연습 - 징검다리 건너기 [2, 4, 5, 3, 2, 1, 4, 2, 5, 1] 3 3 programmers.co.kr 요점 이분 탐색을 구현할 수 있는지를 확인하는 문제 개인적으로 5만번 이상의 반복을 시키는 문제는 드물다고 생각 => 그 이상이라면 다른 방법을 찾아야한다 이분 탐색 문제의 Target 수가 없고 최대값을 찾는 문제라면 보통 배열 기준이 아닌 문제의 정답에 기준을 맞춰야한다. 참고 지식 대개 이분탐색의 Target이 정해져 있다면 탐색의 끝은 mid == target, 아니라면 min > max 일 때 끝이다 풀이 (Java) cla..
[Java] String 선언 방식에 따른 차이 String을 사용할 때 2가지 방식으로 선언할 수 있는데 어떤 차이가 있을까요? Java에서 String은 Reference 타입 중 가장 많이 사용되지 않을까 생각됩니다. 그런데 잘 알지도 못하고 사용하고 있다고 위의 질문을 들었을 때 알게 되었습니다. 그리고 Java책을 다시 펴보게 됐네요 ㅎㅎ public class Test { public static void main(String [] args) { String init1 = new String("init1"); String init2 = "init2"; String init2_2 = "init2_2"; } } String을 사용할 때 보통은 init2의 방식대로 사용하겠지만 위의 방식도 가능합니다. 중요한 차이점은 JVM에서 관리하는 메모리 ..
메모리 구조와 Stack / Heap 메모리 1. 메모리 구조 애플리케이션을 개발하고 서버에 띄우게 되면 OS가 RAM 메모리를 할당해주고 그 곳에 로드되게 됩니다. 이때 OS로부터 할당받는 메모리는 4가지 영역으로 나누어집니다. Code(코드) 영역 프로그램의 코드가 저장되는 공간입니다. Data(데이터) 영역 전역 변수와 정적 변수가 저장되는 공간입니다. 프로그램 시작과 함께 할당되고 프로그램이 종료되면 해제됩니다. Stack(스택) 영역 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 공간입니다. 함수의 호출과 함께 할당되며 함수 호출이 종료되면 해제됩니다. 메모리의 높은 주소에서 낮은 주소 방향으로 할당됩니다. Heap(힙) 영역 사용자에 의해 동적으로 할당되고 해제되는 공간입니다. Java - new, c - realloc 등을 사..
[Java] Java Primitive Type VS Reference Type Java에서는 기본형 타입과 참조형 타입이 있습니다. 저도 너무나 자연스럽게 사용하고 있지만 아래의 질문을 받으니 대답 할 수가 없었습니다. Java에서 Primitive Type, Reference Type은 메모리 어디에 저장이 될까요? 이에 대한 정답은 아래에 정리하겠습니다. 1. Primitive Type (기본형 타입) 기본값이 NULL이 아닌 값들로 이루어져있다. 실제 값을 저장하고 메모리는 스택(Stack) 메모리에 저장된다. 컴파일 에러를 발생시킨다. 타입 메모리 크기 기본값 표현 범위 boolean 1 byte false true, false byte 1 byte 0 -128 ~ 127 short 2 byte 0 -32,768 ~ 32,767 int 4 byte 0 -2,147,483,6..
SPA에 대해서 (Single Page Application) 단일 페이지 애플리케이션(Single Page Application)은 웹, 앱에서 점점 많은 정보를 제공하는 추세에 따라 발전된 모던 웹의 패러다임입니다. 정보가 많아질수록 웹을 로딩하는데 비용이 많이 들어가게 되고 사용자 경험이 점점 안좋아지게 됩니다. 따라서 해결책이 필요해지게 된거죠. 기존에는 Link Tag 방식을 사용했습니다. 우리가 아는 링크를 클릭하게 되면 다른 페이지로 이동하게 됩니다. 그리고 그 링크에 대한 URL은 각각 다르게 설정되어 있죠. 이 방식은 각 URL에 해당되는 화면에 대한 리소스를 전부 구성하여 내려주게 됩니다. 이것이 서버 렌더링 방식이죠. 서버에서 렌더링하여 클라이언트에게 보내주게 됩니다. 서버 렌더링 방식은 새로운 페이지 요청마다 정적 리소스를 다운로드하게 되고 전..