코트카타
38) 직사각형 별찍기
나의 풀이
import java.util.Scanner;
class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
for(int i=0;i<b;i++){
for(int j=0;j<a;j++){
System.out.print("*");
}
System.out.println();
}
}
}
for문을 사용해서 가로길이만큼 *출력 후 개행했다.
다른 분들의 풀이
import java.util.Scanner;
import java.util.stream.IntStream;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
StringBuilder sb = new StringBuilder();
IntStream.range(0, a).forEach(s -> sb.append("*"));
IntStream.range(0, b).forEach(s -> System.out.println(sb.toString()));
}
}
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/12969/solution_groups?language=java
StringBuilder와 IntStream을 사용하셨다.
나에게는 아직 어색한 개념이다.
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
sc.close();
String row = "*".repeat(a); // 'a'개의 '*'로 이루어진 문자열 생성
for (int i = 0; i < b; i++) {
System.out.println(row);
}
}
}
String에는 다양한 메서드가 있는 것 같다.
Java 11부터 사용가능하다고 한다.
스탠다드반 세션
[Spring 5기] 트랜잭션과 인덱스에 대해 알아보자
- 금융에 취업하려면 트랜잭션 관리를 잘해야 함
트랜잭션이란 무엇일까?
- 데이터베이스에서 하나의 논리적인 작업 단위
- ACID 원칙을 지켜야 함
- Atomicity(원자성): 하나라도 실패하면 전체가 롤백(All or Nothing)
- Consistency(일관성): 트랜잭션 실행 전후 데이터가 일관성 유지
- Isolation(격리성): 트랜잭션끼리 독립적으로 실행(독립(관리하기 진짜 어려움 ex)대용량 트래픽, LOCK))
- Durability(지속성): 트랜잭션 완료 후 영구적으로 저장(로그, 기록 영구적)
@Transactional
결제, 재무관리 시 촘촘히 나누기
ex) 결제 취소, 에러 발생 시 Rollback 되면 로그 히스토리 날아감
@Transactional(readOnly=true)
→ 쓰기 , 수정, 삭제 작업이 차단되거나 무효화됨
→ 읽기 성능이 최적화됨 (중요)
→ JPA 내부에서 변경감지를 하는데, readOnly에서는 비활성화해서 성능 향상
→ 트랜잭션 롤백이 가능은 하지만, 어차피 변경안하죠 큰 의미는 없음
→ 영속성 컨텍스트 (중요 ! 따로 공부할 것)
영속성 컨텍스트
Entity 객체를 영속성 상태로 관리하는 일종의 캐시 역할을 하는 공간으로
여기에 저장된 Entity는 데이터베이스와 자동으로 동기화되며
같은 트랜잭션 내에서는 동일한 객체가 유지된다.
인덱스는 간단히 개념만!
- full scan 막기 위해 사용
- B-Tree
- B+Tree
- Full Text - 검색할 때 유용
- Index는 추후 과제할 때 적용해보기
- explain 하면서 속도 개선 등 확인하면서 Index 쓰기
인덱스는 튜터님 회사에서 복합인덱스 사용하는 예시
요런식으로 복합해서 걸어요 괄호 안에가 컬럼들이에요
숙련 Spring 3주차
boardRepository.findAll() // ① 모든 Board 엔티티 리스트 조회
.stream() // ② 스트림 변환 (List<Board> → Stream<Board>)
.map(BoardResponseDto::toDto) // ③ Board 객체를 BoardResponseDto로 변환
.toList(); // ④ 최종적으로 List<BoardResponseDto> 생성
주요 개념 정리
- findAll()
- JPA의 JpaRepository 메서드로 모든 Board 엔티티를 조회합니다.
- 반환 타입: List<Board>
- .stream()
- List<Board>를 스트림(Stream<Board>)으로 변환합니다.
- .map(BoardResponseDto::toDto)
- 각 Board 엔티티를 BoardResponseDto로 변환합니다.
- BoardResponseDto 클래스에 static BoardResponseDto toDto(Board board) 메서드가 있다고 가정합니다.
- board -> BoardResponseDto.toDto(board)를 메서드 참조 (::)를 사용하여 축약한 형태입니다.
- .toList() (Java 16 이상)
- 최종적으로 List<BoardResponseDto>를 생성합니다.
- Java 8에서는 collect(Collectors.toList())를 사용해야 합니다.
그래도 직접 손으로 따라치면서 작성해보니 감이 잡히는 것 같다.
물론 내일 발제될 과제 난이도는 강의보다 더 어려울 예정이라
마음의 준비를 하고 오늘을 마무리하고자 한다.
'CODING > 스파르타 내일배움캠프 TIL' 카테고리의 다른 글
37_최대공약수와 최소공배수_일정관리 개인과제 피드백_일정관리 Develop 개인과제 Lv 1, 2 구현중_25.2.6(목) (0) | 2025.02.06 |
---|---|
일정 관리 앱 Develop 개인과제 관련 트러블슈팅 TIL 모음 (0) | 2025.02.06 |
35_행렬의 덧셈_일정관리 개인과제 해설_숙련 Spring 1,2주차_25.2.4(화) (1) | 2025.02.04 |
34_문자열 다루기 기본_스탠다드 데이터베이스 연관관계 매핑_일정관리 과제 Lv 5 구현완료_25.2.3(월) (0) | 2025.02.03 |
일정관리 개인과제 관련 트러블슈팅 TIL 모음 (0) | 2025.02.03 |