Do it! 알고리즘 입문: 자바 편 (20)[책리뷰 & Book review]
본문 바로가기

컴퓨터공부/책리뷰 & book review

Do it! 알고리즘 입문: 자바 편 (20)[책리뷰 & Book review]

by Life & study 2024. 2. 4.
반응형

 
 

 

캡슐화란 무엇이냐??? 

캡슐화(Encapsulation)는 객체 지향 프로그래밍에서 중요한 개념 중 하나로, 데이터와 그 데이터를 다루는 함수(메서드)를 하나로 묶는 것을 의미합니다. 이를 통해 데이터의 직접적인 접근을 제한하고, 함수를 통해서만 데이터를 다룰 수 있게 함으로써 데이터의 안정성과 신뢰성을 높입니다.

 캡슐화

   ┌──────────────────┐
     │       객체       │
     │ ┌──────────────┐ │
     │ │    데이터    │ │
     │ └──────────────┘ │
     │ ┌──────────────┐ │
     │ │   함수(메서드)  │ │
     │ └──────────────┘ │
     └──────────────────┘


Java에서는 private, protected, public 등의 접근 제어자(Access Modifier)를 통해 캡슐화를 구현합니다.

private: 해당 변수나 메서드는 선언된 클래스 내에서만 접근 가능합니다.
protected: 해당 변수나 메서드는 선언된 클래스와 동일한 패키지에 있는 클래스, 그리고 해당 클래스를 상속받은 다른 패키지의 클래스에서 접근 가능합니다.
public: 해당 변수나 메서드는 어떤 클래스에서도 접근 가능합니다.




 

메모리의 작동방법은 무엇인가?

가비지 컬렉터는 자바의 메모리 관리 시스템의 일부로, 자동으로 작동합니다. 가비지 컬렉터의 주요 역할은 프로그램이 더 이상 사용하지 않는 메모리를 자동으로 회수하는 것입니다.

자바에서는 객체가 생성될 때마다 해당 객체에 대한 메모리가 할당되고, 객체가 더 이상 필요하지 않게 되면 가비지 컬렉터에 의해 그 메모리가 자동으로 해제됩니다. 이 과정은 코드의 특정 부분에 의해 직접적으로 제어되는 것이 아니라, 
자바 런타임 환경에 의해 자동으로 관리됩니다.
 
 
 
 
 
 

<meta> 태그와 SEO의 관계는?

 
<meta> 태그의 사용 방법을 살펴보면, 키워드를 설정할 때는 name 속성에 keywords를 사용하고 content 속성에 키워드를 콤마로 구분하여 나열합니다. 따라서 올바른 형식은 다음과 같습니다:

html

<meta name="keywords" content="제목1, 제목2, 제목3">
<meta name="keywords" content="주제1, 주제2, 주제3">


위와 같이 content 속성에 원하는 키워드를 콤마로 구분하여 입력할 수 있습니다. 하지만, 현대의 대부분의 검색엔진들은 이 keywords 메타 태그를 무시합니다. 대신, 실제 페이지의 내용과 타이틀, URL, 그리고 다른 사이트들이 어떻게 당신의 사이트를 링크하는지 등을 기반으로 검색 결과를 결정합니다.
 따라서 keywords 메타 태그는 SEO 측면에서는 큰 영향을 주지 않습니다.
 
 
숫자와 쿼리는 무엇인가?
 
9는 두 번째 쿼리인 2 4에 대한 결과입니다. 이 쿼리는 numbers 배열의 2번째부터 4번째 요소까지의 합을 구하라는 의미입니다.

numbers 배열은 다음과 같습니다:

1 2 3 4 5 (배열의 인덱스)
5 4 3 2 1 (배열의 값)



따라서, 2번째부터 4번째 요소까지의 합은 4 + 3 + 2 = 9입니다. 이렇게 계산하여 9를 얻게 됩니다. 이는 예제 출력 1의 두 번째 줄과 일치합니다. 이렇게 이 코드는 주어진 범위의 합을 빠르게 계산하는 데 사용됩니다. 이러한 기법은 동적 프로그래밍이라는 알고리즘 설계 기법의 한 예입니다. 동적 프로그래밍은 복잡한 문제를 작은 부분 문제로 나누어 해결하는 방법입니다. 이 방법은 문제를 더 빠르고 효율적으로 해결할 수 있게 합니다.



 

에제 입력1 에서  5 5 이면 예제 출력 1에 2가 나와야 하지 않나?

 

아니요, 그렇지 않습니다. '5 5' 쿼리는 인덱스 5부터 인덱스 5까지, 즉 인덱스 5의 값만을 포함하는 범위를 의미합니다.

우리가 가진 숫자 배열은 다음과 같습니다:

1 2 3 4 5 (배열의 인덱스)
5 4 3 2 1 (배열의 값)


따라서 '5 5' 쿼리는 인덱스 5의 값인 '1'을 가져오게 됩니다.

'5 5'는 시작 인덱스와 끝 인덱스가 동일한 경우로, 이 경우에는 단일 인덱스의 값을 가져오게 됩니다. 따라서 '1'이 출력되는 것이 맞습니다.
 


동일 인덱스는 동일한 값을 가져온다.
 
 

 

 

반응형

댓글