TIL day 51

최병은·2024년 3월 12일
  1. 코딩테스트(둘만의 암호)
import java.util.ArrayList;

class Solution {
    public String solution(String s, String skip, int index) {
        
        ArrayList<Character> a = new ArrayList<>();
        for(int i = 0; i < 26; i++){
            a.add((char) ('a' + i));
        }
        for(Character b:skip.toCharArray()) {
            a.remove(b);
        }

        StringBuilder sb = new StringBuilder();

        for (Character c:s.toCharArray()) {
            int idx = a.indexOf(c);
            idx = (idx+index)%a.size();
            sb.append(a.get(idx));
        }

        return sb.toString();
    }
}

String 문자열인 s나 skip을 toCharArray() 메소드를 통해 char 배열로 만들 수 있다.
char[] s1 = s.toCharArray();
char[] skip1 = skip.toCharArray();


  1. 페이징 적용
@Service
@RequiredArgsConstructor
public class ProductServiceImpl implements ProductService{
    
    private final ProductRepository productRepository;

    @Override
    @Transactional(readOnly = true)
    public List<ProductResponseDto> getProductByCategory(PageDto pageDto) {
        Page<Product> productByCategory = productRepository.findAllByCategory(CategoryEnum.Electronics,pageDto.toPageable());
        List<ProductResponseDto> responseDto = new ArrayList<>();

        for (Product p : productByCategory) {
            responseDto.add(new ProductResponseDto(p.getProductId(),p.getUsername(),p.getCategory(),p.getTitle(),p.getProductInfo(),p.getPrice(),p.getCreatedAt(),p.getModifiedAt(),p.getImageUrl()));
        }
        return responseDto;
    }
@AllArgsConstructor
public class PageDto {
    @Positive
    private Integer currentPage;
    private Integer size;
    private String sortBy;

    public Pageable toPageable() {
        return PageRequest.of(currentPage-1, size, Sort.by(sortBy).descending());
    }
}
public interface ProductRepository extends JpaRepository<Product, Long> {

    Page<Product> findAllByCategory(CategoryEnum category, Pageable pageable);
}

Pageable을 이용해서 페이징 적용을 해보았다. PageDto의 currentPage는 현재 페이지(1부터 시작)를 뜻하고 size는 한 페이지당 반환되는 갯수를 뜻한다. 카테고리 중 Electronics에 해당하는 데이터들만 가져오게 한다.

profile
안녕하세요

0개의 댓글