안녕하세요. delay100입니다.
마침내 시작된 알고리즘/코딩테스트 주차..!!!
저는 solved.ac기준 gold5지만,,,, 잘 못할까봐.. 무서워서 우선 베이직 반을 신청했습니다.
확실히 골드문제들 보다가 브론즈~실버 푸니까 알고리즘보다는 구현이 많아서 난이도가 낮더군요..!!
매일 주어지는 8문제(1~8번)는 꼭 풀고, 시간이 남으면 9~12번도 해결해보려합니다.
이력서 주차때 너무 자신감이 떨어져버려서..... 열심히 문제들 해결하면서 자신감을 채워보겠습니다..
2주차 TIL 질문 키워드
Q1. 오늘 진행된 강의에서 학습한 내용은 무엇인가요?
A.
강의자료는 간단한 문자열 입출력, 조건문, 연산자 정도 다뤘습니다. 결론적으로는 8문제를 해결했습니다.!!
푼 문제 중 가장 오래걸렸던 문제를 블로그에 업로드해두었습니다.
https://delay100.tistory.com/175
Q2. 이번 주 진행된 팀 스터디에서 얻은 인사이트는 무엇인가요?
A.
1.
그리고 배열에서 최댓값 구하기 위해서 Arrays.sort()로 해서 가장 끝값을 채택했는데, Math.max를 잘 이용해봐야겠다고 생각했습니다.
3번 문제에서 문자열을 반복해서 출력해야하는 문제였습니다.
for(int j=0; j<length; j++) { // 문자열의 문자를 하나씩 순회 ex) A, B, C
for(int k=0; k<R; k++) { // 문자열을 R번만큼 반복한 값을 출력값에 추가
sb.append(S.charAt(j));
}
}
멘토님께 혹시 String 메소드에 반복시켜주는 것이 있는지 질문을 드렸습니다!
repeat메소드를 쓰면 String을 반복할 수 있다는 결과를 얻었습니다.
사실 여기서는 .charAt()을 어차피 써야하기때문에 반복문을 결국 써야하므로 의미가 없긴 합니다.
관련 블로그: https://priming.tistory.com/118
2.
StringBuilder sb = new StringBuilder();
sb라는 변수는 주소값을 담을 뿐이고, 그 주소 안에 StringBuilder()가 존재
StringBuilder 할당 시 바이트가 얼마인가?
- 초기 용량: 16 문자
- 메모리 사용: 32 바이트 (16 문자 × 2 바이트/문자)
*chatGPT
`StringBuilder` 객체 자체는 여러 속성과 메서드를 포함하고 있기 때문에, 정확한 메모리 사용량을 계산하려면 내부 구조를 이해해야 합니다. `StringBuilder`의 메모리 사용량을 추정하기 위해 주요 구성 요소를 살펴보겠습니다.
### `StringBuilder`의 주요 구성 요소
1. **`char[]` 배열**: 실제 문자열 데이터를 저장하는 배열입니다.
2. **`int count`**: 현재 문자열의 길이를 나타내는 정수입니다.
3. **기타 오버헤드**: 객체 헤더 및 참조 변수가 포함됩니다.
### 기본 생성자 사용 시
기본 생성자 `new StringBuilder()`를 사용하면 초기 용량이 16 문자인 `char[]` 배열이 생성됩니다.
#### 메모리 사용량 추정
1. **`char[]` 배열**: 초기 용량은 16 문자이므로, 배열의 크기는 16 * 2 = 32 바이트입니다. (각 `char`는 2 바이트)
2. **객체 오버헤드**: Java 객체는 JVM 구현에 따라 오버헤드를 가집니다. 일반적으로 객체 헤더는 8 바이트, 참조 변수는 4 바이트를 사용합니다. 하지만 이 값은 JVM 및 플랫폼에 따라 다를 수 있습니다.
### 대략적인 메모리 사용량
- `char[]` 배열: 32 바이트
- `int count`: 4 바이트
- 객체 헤더 및 참조 변수: 약 12 바이트 (헤더 8 바이트 + 4 바이트 참조 변수)
따라서, 기본 생성자로 생성된 `StringBuilder` 객체의 전체 메모리 사용량은 대략 다음과 같습니다:
- `char[]` 배열: 32 바이트
- `int count`: 4 바이트
- 객체 헤더 및 참조 변수: 12 바이트
**총합**: 32 + 4 + 12 = 48 바이트
### 요약
`StringBuilder sb = new StringBuilder();`로 생성된 `sb` 객체는 초기 문자열 저장 공간을 위해 32 바이트 (16 문자의 `char[]` 배열)를 사용합니다. 이 외에도 객체 헤더와 기타 속성에 추가 메모리가 사용됩니다. 전체적으로 기본 생성자를 사용하여 생성된 `StringBuilder` 객체는 약 48 바이트를 사용합니다.
이 계산은 대략적인 것이며, JVM 구현 및 특정 플랫폼에 따라 다를 수 있습니다.
항해99 취업 리부트 코스를 수강하고 작성한 콘텐츠 입니다.
[할인]란에 “추천왕 3기 백지연” 입력 시 10만원 할인
(*얼리버드, 타 혜택 중복 적용 가능)
'항해99 > 취업 리부트 코스 3기' 카테고리의 다른 글
[항해99 취업 리부트 코스 학습일지] 3기 9일차 TIL (0) | 2024.05.31 |
---|---|
[항해99 취업 리부트 코스 학습일지] 3기 8일차 TIL (0) | 2024.05.30 |
[항해99 취업 리부트 코스 학습일지] 3기 6일차 TIL (0) | 2024.05.28 |
[항해99 취업 리부트 코스 학습일지] 3기 5일차 TIL (0) | 2024.05.27 |
[항해99 취업 리부트 코스 학습일지] 3기 4일차 TIL (0) | 2024.05.25 |