포스트

2021-11-21-TIL

Today I Learned

실리콘 밸리 코딩테스트

전반적으로 문제가 쉽고 특정 알고리즘을 알아야 풀 수 있는 문제는 없었다. 다만 문제의 지문이 길고, 추상적으로 주어지므로 문제의 핵심을 빠르게 파악해서 빠르게 모델링 하는 능력이 요구되었다. 그래서 한 문제 밖에 못 풀었다..

이런 유형에서 어려운 단계는 알고리즘 선택이 아니라 지문을 코드의 자료 구조로 옮기는 단계다. 코드를 쓰기 전에 지문에서 다음 세 가지를 먼저 뽑아 적어 두면 모델링이 빨라진다.

  • 입력과 출력의 형태: 무엇이 주어지고 무엇을 돌려줘야 하는지
  • 상태: 문제 속에서 변하는 값이 무엇이고, 어떤 자료 구조에 담을지
  • 규칙: 상태가 바뀌는 조건을 한 줄씩 나열한 것

이렇게 적고 나면 추상적인 지문이 구현 문제로 바뀌고, 지문의 예시 입력을 손으로 따라가며 규칙을 빠뜨리지 않았는지 확인할 수 있다.


E-Commerce with Spring

  • https://www.baeldung.com/spring-angular-ecommerce

Spring Boot로 API를 만들고 Angular 클라이언트가 그 API를 쓰는 간단한 이커머스 예제다. 사용자는 상품 목록에서 장바구니에 상품을 담거나 빼고 주문할 수 있다. 백엔드는 JPA와 H2 데이터베이스를 쓰고, controller, service, repository, model, dto, exception 패키지로 나뉜다.

도메인 모델에서 볼 만한 부분은 주문과 상품의 다대다 관계를 푸는 방식이다. Order와 Product 사이에 OrderProduct 엔티티를 두고, 주문과 상품을 묶은 복합 키를 @Embeddable 클래스(OrderProductPK)로 만들어 @EmbeddedId로 지정한다. 또 Order라는 클래스 이름을 그대로 테이블 이름으로 쓰면 SQL 예약어 ORDER와 겹치므로 테이블 이름을 바꿔야 한다는 점도 짚는다. 초기 상품 데이터는 CommandLineRunner로 넣는다.

참고한 자료외부 출처 1

외부 출처

이 글은 저작권자의 CC BY 4.0 라이선스를 따릅니다.

댓글

아직 댓글이 없습니다