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();
@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에 해당하는 데이터들만 가져오게 한다.