묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
궁금한게 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.여기 강의에 보면 검은색 화면에 노트같은거 있는데 그건 혹시 제공이 되지 않나요 ??? erd라던가 설명 보니깐 그거 보면서 보면 괜찮을꺼 같아서요
-
미해결실전! Querydsl
@Type(JsonType.claa) 어노테이션 인식 불가 문제.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 강사님.Entity 가 가지고 있는 필드중에 아래와 같은 필드가있습니다.//Entity @Type(JsonType.class) @Column(name ="INFO", columnDefi...) private Setting setting; ..위와 같이 엔티티에 oracle 19c 의 VARCHAR2 타입에 json check 를 활용하여 json 타입의 필드를 사용하고있습니다. 아래와 같이 JPA 를 활용하여 데이터를 업데이트할때는 시리얼라이제이션에서 별다른 문제가없는데요Entity a = em.find(id); a.setSetting(settingDto); 이후에 정상적인 업데이트 쿼리후 Setting 객체가 json String 형태로 INFO 컬럼에 정상적으로 업데이트됨.문제는 QueryDSL 형태로 update를 할때입니다.queryFactory.update(entity) .set(qEntity.setting, settingDto) .execute()위와같이 변경하여 업데이트를 시도하면 org.hibernate.type.descriptor.java.spi.JdbcTypeRecommendationException: Could not determine recommended JdbcType for 'com. .. .Setting'오류가 발생합니다. 추측하건데 @Type(JsonType.clss) 관련 Entity 의 컬럼 어노테이션을 참조하지 못하는것 같은데 혹시 문제를 겪어보셨거나 해결에 도움이 될만한 내용이있을까해서 질문드려봅니다.감사합니다.
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
git add . 에서 오류가 발생하는데 어떤 문제인가요??
그리고 파일들을 보니까 다 빨간색으로 변해있더라고요 언제부터 변했는지는 모르겠어요. 우선 git 명령어 치기 전까지는 괜찮았어요 오류를 찾아보니까 해당 파일에 .git 파일을 지우고 다시 하라고 했던 것 같은데그런 파일은 없더라고요오류에 대해 잘못 찾았나 봐요 ㅎㅎ; -------------------.git 폴더는 다시 보니까 숨긴 항목으로 숨겨져 있었네요...git 폴더 지우고 다시 처음부터 했더니 이상 없습니다!
-
미해결
인텔리제이에서 깃허브 로그인 시 응용 프로그램을 찾을 수 없습니다.
유튜브에서 본 대로 인텔리제이에서 작성한 프로젝트를 깃허브에 올리려고 하는데, 깃허브 로그인 시에 저런 에러창이 뜹니다. 어떤 프로그램을 더 설치하거나 해야 할까요...?
-
미해결스프링 시큐리티
remember-me 쿠키와 토큰 기반 인증 방식
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.remember-me 인증이 토큰 기반 인증을 사용해 유효성을 검사한다고 하셨는데, 토큰 기반 인증은 statelesss한 방식 알고있습니다. remember-me 인증은 세션을 이용한 서버 기반 인증 방식으로 사용자 상태를 저장하고, 토큰 기반 인증 방식은 그 반대라고 생각되는데, 강사님은 토큰 기반 인증 방식을 좀 더 넓은 범위로 보신건지 궁금합니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
setter 을 사용하지 않는다면 어떻게 해야 할까요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예강의에서는 setter를 사용하지 않고 하는게 바람직하다고 언급하신적이 있습니다. public static OrderItem createOrderItem(Item item,int orderPrice,int count){ OrderItem orderItem=new OrderItem(); orderItem.setItem(item); orderItem.setOrderPrice(orderPrice); orderItem.setCount(count); item.removeStock(count); return orderItem; }이것은 영한님 강의의 OrderItem이라는 중간테이블을 생성해주는 것이였습니다. 위에서 set,set,set 이 많이 나오는데 이게 아마 builer패턴? 으로 위 코드에서 setter를 지워주는것 맞져?? 그러면 Order의 연관관계 편의 메서드인 아래 코드는 또 어떻게 바꿔야 할까 public void addOrderItem(OrderItem orderItem){ orderItem.setOrder(this); this.orderItems.add(orderItem); }이거는 또 어떻게 바꿔야 할까요?? 실무에서는 이런 것까지도 set을 안쓰나요? 아니면 뭐set 대신 이름만 inItOrder로 바꿔야 하는 것인가요? 질문 2) 솔직히 set을 왜 안써야 하는지 감이 안옵니다. 다른 개발자가 무작정 set을 호출할수 있다는게 단점이라고 하신 것 같은데 그러면 뭐 cancelOrder 이런 메서드로 바꾸면 다른 개발자가 이걸 호출할수도 있지 않나요?? 질문 3) 가끔 보면 이런 코드가 있습니다. public void initPost(Post post) { if(this.post == null) this.post = post; }이것은 init 이기때문에 단순히 null 인지 체크해주는 것인가요??가끔 이렇게 매개변수들어온게 null 인지 체크하는 로직이 들어있는게 있더라고요!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
영한님 죄송합니다. 답변을 제대로 이해하지 못했습니다 ㅠ
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (페치 조인 질문있습니다! - 인프런 | 질문 & 답변 (inflearn.com) 이것을 작성했었던 글쓴이인데 아직 이해가 덜되어서 질문합니다! 제 질문과 영한님의 답변을 요약하면제 질문은 1대 다 에서는 fetch join을 고려하고 다대1에서 batch size를 이용해서 최적화하는게 좋았는데 다대1에서 그러면 역으로 1대다기준으로 fetch join 쓰면 안되냐는게 질문이였고 그에 대한 영한님의 답변은 다쪽(위에 질문에서는 중간테이블) 을 기준으로 조회하기 어려운 경우가 있는데 그 경우는 1쪽기준으로 페이징을 한다면 다쪽에서 페이징이 모호하다. 라는 것이였습니다.(제가 제대로 이해한 것 맞겠죠?)@Query("select pc from Person_Club pc join fetch pc.club where pc.person.id=:personId ORDER BY pc.club.name DESC") List<Person_Club> findTop5ByPersonIdOrderByClubName(@Param("personId") Long personId,Pageable pageable);위 코드는 정확히 기억이 안나는데 Person_Club은 person과 Club의 다대다 중간테이블로 만들었고 where 절 로 persinID를 받아서 범위를 제한하고 페이징을 했던걸로 기억하는데 이런 경우는 1쪽기준으로 페이징을 한다면(where 절로 범위 제한) 다쪽에서 페이징이 모호해지지 않지 않나요?? 부족한 설명죄송합니다
-
미해결실전! Querydsl
Response에 값이 채워지지 않습니다!
안녕하세요! 제가 지금 진행 중인 프로젝트가 있는 데 어려움을 겪어서 질문 드립니다!queryDsl을 사용해서 DTO로 바로 조회도 되고 값이 담겨져 있는 것도 로그를 찍어서 확인할 수 있습니다. 근데 PostMan이나 스웨거로 값을 반환받았을 때 isAuthenticated 값은 잘 채워져서 나오는 데 CulturalEventDetail값이 자꾸 null로 반환이 됩니다! 아무리 찾아봐도 답이 안 나와서 질문 드립니다..아래는 코드 입니다! @Getter @Builder @NoArgsConstructor @AllArgsConstructor @ToString public class CulturalEventDetailsResponseDTO { private CulturalEventDetail culturalEventDetail; private boolean isAuthenticated; } public CulturalEventDetailsResponseDTO getCulturalEventDetails(final int culturalEventId, final int userId) { return queryFactory.select(Projections.fields(CulturalEventDetailsResponseDTO.class, culturalEvent.culturalEventDetail, visitAuth.isAuthenticated)) .from(culturalEvent) .leftJoin(visitAuth) .on( culturalEvent.id.eq(visitAuth.culturalEvent.id), visitAuth.user.id.eq(userId)) .where( culturalEvent.id.eq(culturalEventId) ) .fetchOne(); } public CulturalEventDetailsResponseDTO getCulturalEventDetails(final int culturalEventId, final User user) { final CulturalEventDetailsResponseDTO culturalEventDetails = culturalEventQueryRepository.getCulturalEventDetails(culturalEventId, user.getId()); culturalEventRepository.updateVisitCount(culturalEventId); log.info("culturalEventDetails = {}", culturalEventDetails); return culturalEventDetails; } 2023-11-12T04:44:46.017+09:00 INFO 10556 --- [nio-8080-exec-1] e.c.c.s.c.CulturalEventService : culturalEventDetails = CulturalEventDetailsResponseDTO(culturalEventDetail=CulturalEventDetail( category=CONCERT, d, ....), isAuthenticated=true) @RestController @RequiredArgsConstructor @RequestMapping("/cultural-event") public class CulturalEventController { private final CulturalEventService culturalEventService; @GetMapping("/{culturalEventId}") public ResponseEntity<CulturalEventDetailsResponseDTO> getCulturalEventDetails(final @PathVariable int culturalEventId, final @AuthenticationPrincipal User user) { return ResponseEntity.ok(culturalEventService.getCulturalEventDetails(culturalEventId, user)); }
-
미해결실전! 스프링 데이터 JPA
h2 데이터베이스 연결 문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 비슷하지만 없는 것 같습니다.3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]강의 극 초반인데 h2 데이터베이스 문제로 시작도 못 하구 있습니다. ㅠㅜ영한쌤과 같은 버전으로 하려고 했는데 start.spring.io에서는 2.2.1이 안되더라구요ㅠㅜ 그래서 3.xx 버전을 사용하고 있습니다. 따라서 h2데이터베이스도 2.1xx 버전을 깔았습니다.근데 자꾸 h2연결이 안되어서 run도 안되고 데이터베이스 연결도 안 되더라구요ㅠㅜdb이름도 datajpa, data-jpa 등등 바꿔서도 해보고 이름도 바꿔서도 해보고 해도 안되네요.그리고 db파일은 생성이 원래 되었었는데, 지금 현재 안되서 프로젝트와 db파일을 지우고 첨부터 다시 해보고를 반복하면서 지웠었는데, 이제는 아예 생성이 안되더라구요...ㅎㅎ어떻게 해야할까요>?ㅠㅜ h2연결이 안되서 강의 진도를 못 나가고 있습니다.h2데이터베이스는 어떻게 생성을 하는건가요? 그냥 yml설정해주고 빌드를 하고 h2 console에 연결 하면 생기는 건가요? 아니면 생긴걸 확인하고 console로 들어가는건가요?감사합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
jpql 엔티티 인지 오류
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]일단은 해결 했습니다.findAllString 이용하는데 Order를 얘가 모르는 거 같아서..String jpql = "select o From jpabook.jpashop.domain.Order o join o.member m";이렇게 패키지경로까지 다 명시해줬더니 인지를 하더라구요..안 그러면 org.hibernate.query.sqm.UnknownEntityException: Could not resolve root entity 'Order' at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitRootEntity(SemanticQueryBuilder.java:1960) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final] at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitRootEntity(SemanticQueryBuilder.java:253) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final] ...............얘가 이렇게 Order 인지 못한다고 오류가 뜹니다..원래 엔티티는 그냥 @Entity 등록 하면 알아서 인지 되는걸로 알고 있었는데..왜 이런 걸까요?package jpabook.jpashop.domain; import jakarta.persistence.*; import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @Entity(name = "orders") @Getter @NoArgsConstructor(access = AccessLevel.PUBLIC) public class Order { @Id @GeneratedValue @Column(name = "order_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") private Member member; @OneToMany(mappedBy = "order", cascade = CascadeType.ALL) private List<OrderItem> orderItems = new ArrayList<>(); @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JoinColumn(name = "delivery_id") private Delivery delivery; private LocalDateTime orderDate; @Enumerated(EnumType.STRING) private OrderStatus status; public void changeMember(Member member){ this.member = member; member.getOrders().add(this); } public void addOrderItem(OrderItem orderItem){ orderItems.add(orderItem); orderItem.setOrder(this); } private void setOrderDate(LocalDateTime orderDate) { this.orderDate = orderDate; } public void changeDelivery(Delivery delivery){ this.delivery = delivery; delivery.setOrder(this); } private void setStatus(OrderStatus status) { this.status = status; } public static Order createOrder(Member member, Delivery delivery, OrderItem... orderItems){ Order order = new Order(); order.changeMember(member); order.changeDelivery(delivery); for (OrderItem orderItem : orderItems) { order.addOrderItem(orderItem); } order.setStatus(OrderStatus.ORDER); order.setOrderDate(LocalDateTime.now()); return order; } public void cancel(){ if(delivery.getStatus() == DeliveryStatus.COMP){ throw new IllegalStateException("이미 배송완료된 상품은 취소가 불가능합니다."); } this.setStatus(OrderStatus.CANCEL); for (OrderItem orderItem : orderItems) { // orderItem.getItem().removeStock(orderItem.getCount()); orderItem.cancel(); } } public int getTotalPrice(){ int totalPrice = 0; for( OrderItem orderItem : orderItems){ totalPrice += orderItem.getTotalPrice(); } return totalPrice; } }
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
준영속 상태란 것은 추상적인 개념인가요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]영속상태라는 것은 영속성 컨텍스트에 들어가는 것으로 명확한데, 준영속 상태는 뭐 그런 꼬리표 같은게 붙는 건가요?아니면 엔티티긴 한데 생성되고 영속성 컨텍스트에 없는 상태를 그냥 추상적으로 준영속상태라고 부르는 건가요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
@NotEmpty, starter-validation 문제
NotEmpty 어노테이션 인식이 안됩니다(valid도 마찬가지). 질문 게시판 보고 스프링 부트 2.3부터는 직접 build.gradle에 implementation 'org.springframework.boot:spring-boot-starter-validation' 추가하고 refresh를 해주어도 아래처럼 에러가 발생합니다제 build.gradle 입니다plugins { id 'java' id 'org.springframework.boot' version '2.7.17' id 'io.spring.dependency-management' version '1.0.15.RELEASE' } group = 'jpabook' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '11' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' // 캐시도 삭제해주고 하는 등 해서 hot reload 처럼 쓰이는것 같음 implementation 'org.springframework.boot:spring-boot-devtools' implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6' implementation 'org.springframework.boot:spring-boot-starter-validation' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' } tasks.named('test') { useJUnitPlatform() }
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JPA 활용1/ 웹계층 개발/ 회원등록 강의 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요. 김영한 선생님의 JPA 활용 1편에 웹 계층 개발에 회원등록 강의에서 4:30 쯤에서 회원가입 버튼을 누르는데 선생님은 잘 뜨시는데 저는 계속 에러페이지가 떠서 글을 작성합니다. 뭐가 문제일까요,,,제코드 링크 올립니다.https://drive.google.com/file/d/1QGBdGAs1z2ZxfsM-PdYAeaD2rH7nptms/view?usp=sharing
-
미해결스프링 시큐리티 OAuth2
커스텀 인증 필터 만들때 질문이 있습니다.
커스텀 Authentication Filter를 만들때 어떤 코드는 AbstractAuthenticationProcessingFilter를 상속 받거나 강사님은 UsernamePasswordAuthenticationFilter를 상속 받는데요 혹시 무엇을 상속 받을지 구분하는게 있을까요? 어떤 필터를 상속 받는것을 추천한다던지
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
생성자
강사님 안녕하세요!혼자서 프로젝트를 짜면서 궁금한게 생겼는데요data class DailyHistoryResponse( val date: String?, // 전체 날짜 2023.11.11 토 val day: String?, // 날짜에서 일만 val dayName: String?, // 요일 val dayWhat: Int?, // 몇일 차 val workOutCount: Int?, val meditationCount: Int?, val workOutRate: Int?, val meditationRate: Int?, ) { constructor(workOutCount: Int?, meditationCount: Int?): this(null, null,null, null, workOutCount, meditationCount, null, null) }DailyHistoryResponse 클래스는 위처럼 생겼는데요 파라미터가 workOutCount, meditationCount 이거 두개만있는 생성자가필요해서 코드에서 맨아래 같이 constructor(workOutCount: Int?, meditationCount: Int?): this(null, null,null, null, workOutCount, meditationCount, null, null) 이렇게 했었는데요..저기서 null하나하나 넣는게 불편하더라고요.. 제가 원하는 코드를 짜기위해서 지금 제가 작성한 코드말고 좋은방법있을것같은데 .. 가르쳐주실수 있을까요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
현업에서 곱하기 연산 처리하기
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)아니오 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)아니오 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]여기에 질문 내용을 남겨주세요. getTotalPrice 부분에서 가격과 개수를 이용해 곱하기를 해 종합 가격을 반환해주는데 만약 가격이 정수가 아닌 실수인 경우 소수점이 나올 텐데 이런거는 어떻게 처리하나요? 단순히 반올림하거나 잘라버리지는 않을거 같은데
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
domain private
강사님 안녕하세요 코드를 작성하면서 궁금증이 생겼습니다.보통 Book이라는 엔티티를 만들면필드는 private을 붙여주잖아요 java에서는요근데 왜 코틀린에선 붙여주지않나요?
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
강사님 수업자료 정리된 pdf는 어디서 받을 수 있나요?
강의자료 두개있는거 받았는데 하나는완성전코드이고 하나는 완성된 코드더라고요 수업자료 정리된 pdf는 어디서 받을 수 있나요?
-
해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
선생님이 풀어주신 코드와 로직은 같은데 왜 채점은 타임에러 뜨는지 모르겠습니다.
선생님이 풀어주신 코드는 한번 더 확인하는 과정을 거쳐서 board의 수만큼 시간 복잡도가 그만큼 더 늘어나는 것 같아서 익지 않은 토마토의 개수를 세어서 그 수만큼 익으면 days를 반환하는 코드를 짰는데 왜 타임에러가 발생하는지 궁금합니다. 제가 놓치고 있는 부분이 무엇일까요?..package testSection8; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; class Point{ int x,y; Point(int x, int y){ this.x = x; this.y = y; } } public class Main{ static int n,m,days=0,total=0,cnt; static int[][] board; static int[] dx = {-1,0,1,0}; static int[] dy = {0,1,0,-1}; static Queue<Point> q = new LinkedList<>(); public int BFS(){ while (!q.isEmpty()){ days++; int size = q.size(); for(int i=0; i<size; i++){ Point point = q.poll(); for(int j=0; j<4; j++){ int nx = point.x+dx[j]; int ny = point.y+dy[j]; if(nx>=0 && nx<n && ny>=0 && ny<m && board[nx][ny] == 0){ if(++cnt == total) return days; board[nx][ny] = 1; q.offer(new Point(nx,ny)); } } } } return -1; } public static void main(String[] args) { MainT = new Main(); Scanner sc = new Scanner(System.in); m = sc.nextInt(); n = sc.nextInt(); board = new int[n][m]; for(int i=0; i<n; i++){ for (int j=0; j<m; j++){ board[i][j] = sc.nextInt(); if(board[i][j] == 1) q.offer(new Point(i,j)); else if(board[i][j] == 0) total++; } } System.out.println(T.BFS()); } }
-
미해결스프링 시큐리티
커밋위치 질문
실전프로젝트 -인증 프로세스 Form 인증 구현 1) 실전프로젝트 생성 에 해당하는 소스코드는 ch04-02 브렌치 어디 커밋에 있나요?? 찾아도 안나와서 문의드립니다. 서버 가동이 오류없이 되는 커밋위치가 궁금합니다.. 그럼 감사합니다!