
제어의 역전 (Inversion of Control) 개발자가 객체를 생성하고, 메서드를 호출하던 JVM에서와는 다르게 WAS는 직접 객체를 생성하고 메서드를 호출한다. 이를 제어의 역전이라고 한다 제어의 역전(Inversion of Control)은 프로그램의 제어 흐름 구조가 거꾸로 되는 것이다 프로그램은 main() 에서 시작해 사용할 오브젝트를 결정하고 그 오브젝트를 만들어 메서드를 호출하는 일을 반복한다. main() 이 어떤 객체를 생성하고, 메소드를 호출하는 등 개발자가 능동적으로 결정하고 만드는 구조이다 반면, 제어의 역전은 기능만 구현해 놓으면 알아서 호출되어 사용되는 수동적인 구조를 갖는다 객체의 생성부터 소멸까지 객체의 모든 생명주기를 개발자가 아닌 컨테이너(WAS)가 담당한다 컨테이..

✏️ 프로세스(Process) 프로세스 : 어플리케이션을 실행하면 OS로부터 메모리의 일정 영역을 할당받아 동작한다 멀티 프로세스 : OS는 동시에 여러 프로세스를 실행할 수 있다 프로세스는 동작하기위해 데이터, 메모리 등의 자원과 하나 이상의 스레드(Thread)로 구성된다 멀티 프로세스가 동작하고, 동일한 어플리케이션을 실행하더라도 프로세스 간의 자원 및 스레드 공유는 발생하지 않는다 ✏️ 스레드(Thread) 프로세스 동작의 최소 단위를 말한다. 프로세스는 하나 이상의 스레드로 구성된다 둘 이상의 스레드로 구성된 프로세스를 멀티 스레드 프로세스라고 말한다 예를 들면 카카오톡은 채팅을 하는 동시에 파일을 전송할 수 있다 단일 스레드 프로세스였다면, 파일을 전송하는 동안 채팅을 할 수 없다 이처럼 스레..

✏️ 서버 사이드(Server-Side)와 클라이언트 사이드(Client-Side) 서버 사이드(Server-Side)란 네트워크의 한 방식인 클라이언트-서버 구조에서 서버에서의 처리를 말한다 웹에서의 서버 사이드를 간단히 말하자면, 웹 서버에서 하는 작업을 의미한다 클라이언트로 요청을 받아 처리하고 처리 결과를 브라우저에 송신, 응답하는 역할을 한다 클라이언트 사이드(Client-Side)란, 네트워크의 한 방식인 클라이언트-서버 구조에서 클라이언트의 처리를 말한다 웹에서의 클라이언트는, 서버와는 상대되는 개념으로 어떤 서비스를 요청하는 역할을 하게 된다 웹 페이지를 요청하는 것은 클라이언트의 역할이라고 말할 수 있다 웹 페이지의 요청은 대부분 웹 브라우저가 하게 된다. 그렇기 때문에 일반적으로 웹에서..

✏️ Collection API 여러 객체를 담아내는 인터페이스들의 특징을 말한다 Collection API : 자료를 저장하는 방식 (HashSet, ArrayList, HashMap) Collection 인터페이스는 가장 원시적인 방법으로 객체를 저장하는 특징을 가진다 Collection API에서는 toString()이 데이터를 리턴하도록 자체적으로 오버라이딩 되어있다 ✏️ Collection Interface Collection 인터페이스는 가장 원시적이므로, 순서가 없고 중복을 허용한다 Set 인터페이스는 Collection 다음으로 원시적이고, 순서가 없고 중복을 허용하지 않는다 List 인터페이스는 내부에서 index로 관리되므로, 순서를 가지고 중복을 허용한다 Map 인터페이스는 key-v..

📌 1991. 트리 순회 이진 트리를 입력받아 전위 순회(preorder traversal), 중위 순회(inorder traversal), 후위 순회(postorder traversal)한 결과를 출력하는 프로그램을 작성하시오. 예를 들어 위와 같은 이진 트리가 입력되면, - 전위 순회한 결과 : ABDCEFG // (루트) (왼쪽 자식) (오른쪽 자식) - 중위 순회한 결과 : DBAECFG // (왼쪽 자식) (루트) (오른쪽 자식) - 후위 순회한 결과 : DBEGFCA // (왼쪽 자식) (오른쪽 자식) (루트) ✏️ 입력. 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노..

📌 10546. 배부른 마라토너 마라토너라면 국적과 나이를 불문하고 누구나 참가하고 싶어하는 백준 마라톤 대회가 열린다. 42.195km를 달리는 이 마라톤은 모두가 참가하고 싶어했던 만큼 매년 모두가 완주해왔다. 단, 한 명만 빼고! 모두가 참가하고 싶어서 안달인데 이런 백준 마라톤 대회에 참가해 놓고 완주하지 못한 배부른 참가자 한 명은 누굴까? ✏️ 입력. 첫째 줄에는 참가자 수 N이 주어진다. (1 ≤ N ≤ 105) N개의 줄에는 참가자의 이름이 주어진다. 추가적으로 주어지는 N-1개의 줄에는 완주한 참가자의 이름이 쓰여져 있다. 참가자들의 이름은 길이가 1보다 크거나 같고, 20보다 작거나 같은 문자열이고, 알파벳 소문자로만 이루어져 있다. 참가자들 중엔 동명이인이 있을 수도 있다. 📋 출력...

📌 12034. 접두사 찾기 문자열 S의 접두사란 S의 가장 앞에서부터 부분 문자열을 의미한다. 예를 들어, S = "codeplus"의 접두사는 "code", "co", "codepl", "codeplus"가 있고, "plus", "s", "cude", "crud"는 접두사가 아니다. 총 N개의 문자열로 이루어진 집합 S가 주어진다. 입력으로 주어지는 M개의 문자열 중에서 집합 S에 포함되어 있는 문자열 중 적어도 하나의 접두사인 것의 개수를 구하는 프로그램을 작성하시오. ✏️ 입력. 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열이 주어진다..

📌 12034. 김인천씨의 식료품가게(Large) 전설적인 인천 식료품가게의 주인인 김인천 씨는 대대적인 할인행사를 계획하고 있습니다. 계산을 단순하게하기 위해 그는 25% 할인된 가격으로 상점의 모든 품목을 판매하기로 결정했습니다. 즉, 각 품목의 판매 가격은 정상 가격의 정확히 75 %입니다. 우연하게도 인천 식료품가게에서 판매하는 모든 물건의 정상가는 4의 배수인 정수이고, 할인된 가격 역시 편리하게도 모두 정수입니다. 김인천씨는 이 할인행사를 준비하기위해서 먼저 모든 판매물품의 할인된 판매가격을 프린터로 출력을 실행했고, 또한 할인행사 종료후 다시 쓸 모든 품목에 정상가격표 역시 출력을 실행하였습니다. 손님이 찾아와 잠깐 자리를 비웠던 김인천씨가 다시 가격표의 출력을 확인하기 위해서 프린터로 돌아..

📌 18258. 큐 2 정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 여섯 가지이다. - push X: 정수 X를 큐에 넣는 연산이다. - pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. - size: 큐에 들어있는 정수의 개수를 출력한다. - empty: 큐가 비어있으면 1, 아니면 0을 출력한다. - front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. - back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. ✏️ 입력. 첫째 줄에 주어지는 명령의 수 N (..