묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
리턴 타입을 void로 해서 풀었는데 확인부탁드립니다.
null이 아니면 계속 뻗어나가고 lt와 rt 둘다 null이면 answer 에다가 L의 최소값을 구해나가는 방식입니다.성능의 차이가 있을까요?..import java.util.*; import java.io.*; class Node { int data; Node lt, rt; public Node(int data) { this.data = data; lt = null; rt = null; } } public class Main { static int answer = Integer.MAX_VALUE; public static void dfs(int L, Node root) { if (root.lt == null && root.rt == null) { answer = Math.min(answer, L); } else { if (root.lt != null) dfs(L + 1, root.lt); if (root.rt != null) dfs(L + 1, root.rt); } } public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = null; Node root = new Node(1); root.lt = new Node(2); root.rt = new Node(3); root.lt.lt = new Node(5); root.lt.rt = new Node(6); dfs(0, root); System.out.println(answer); } }
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
강의를 듣고 공부한 내용을 블로그에 정리해도 괜찮을까요??
안녕하세요 강의 잘 듣고 있습니다~블로그에 항상 그날 공부한것을 포스팅하는중인데 수업자료를 과도하게 노출하지 않는선에서 블로그를 작성하는건 괜찮을까요?? 포스팅하기전에 혹시 몰라서 질문드려봅니다!
-
미해결자바 스프링 프레임워크(renew ver.) - 신입 프로그래머를 위한 강좌
StudentAssembler 클래스 질문드립니다.
강사님께서는 StudentAssembler 클래스 만드셔서 그 안에서 StudentService 파일들을 임포트해서 임포트한 서비스들에 각각 StudentDao를 넣으시고 사용하실때 register = assembler.getRegisterService() 해서 사용하시던데 main 클레스에서StudentDao studentDao = new StudentDao(); 객체를 만들고 여기서 바로registerService = new registerService(studentDao) < 이렇게 해서 사용안하시는 이유가 따로 있으신가요??Assembler 클래스가 각각의 서비스들을 바로 연결되지 못하게 한번 거쳐서 사용하는 클래스인거 같은데 이렇게 사용하려고 하니 확실히 더 복잡해지는거 같아서요...
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
안녕하세요
이 부분에서 em.persist(team) 을 한 후 회원 저장 구현을 한 후 em.persist(member) 를 했는데 회원 구현 이후에 em.persist(team) 를 해도 되나요? 회원 저장 구현 전에 em.persist(team) 를 해야 하는 이유가 있나요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
1개의 테케에서 런타임오류가나는데 왜인지 모르겠습니다.
import java.util.HashMap; import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc= new Scanner(System.in); String a = sc.next(); String b = sc.next(); HashMap<Character,Integer> map = new HashMap<>(); String answer="YES"; for(char x: a.toCharArray()) { map.put(x, map.getOrDefault(x,0)+1); } for(char x: b.toCharArray()) { if(!map.containsKey(x) || map.get(x) == 0) answer="NO"; map.put(x, map.get(x)-1); } System.out.println(answer); } }4-2입니다. 현재 이 상태인데, 한개의 테케에서 런타임오류가 뜨는데 테케가 뭔지 볼수가 없어 왜인지 원인을 못찾겠습니다. 도와주세요
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
강사님, 아무래도 제 개념의 혼동 때문에 그러는 것 같은데요..!
if (factoryCam instanceof FactoryCam) { (FactoryCam)factoryCam; }이 구문에 혼동이 생겨서 질문드립니다! if 안에 조건문의 내용이 " factoryCam 이 FactoryCam 클래스의 인스턴스가 맞다면 " 이라고 설명을 해주셨는데요 (8분 27초경) 만약에 factoryCam 이 FactoryCam 클래스의 인스턴스가 맞다면 형변환이 필요 없는거 아닌가요? 또 헷갈린거 하나 더 문의드립니다. 다형성에 대한 예시를 위해 작성해주셨던 코드 내용인데요.Camera factorycCam = new FactoryCam();만약에 위 코드로 작성한게 부모클래스인 " Camera" 로 객체를 생성한 거라면, factoryCam 의 참조 클래스는 Camera 인 것 같은데요. (그러니까 FatoryCam 의 인스턴스 메서드를 불러왔을 때 에러가 나는 것으로 보이구요.) 근데 이 설명과 "factoryCam instanceof FactoryCam" 이 구문이 " factoryCam 이 FactoryCam 클래스의 인스턴스가 맞다면 " 이라고 설명을 해주시니 상충되는 내용이 아닌가 싶어 혼동이 옵니다. 내용 요약factoryCam 은 부모 클래스로 만들어진 객체라서 FactoryCam 의 인스턴스 메서드를 사용할 수가 없다고 설명을 해주셨습니다!헌데 if 조건문은 "factoryCam 이 FactoryCam 클래스에 포함되어 있다면 " 이라고 설명해주신 부분이 상충되지 않나 하여 헷갈립니다.그리고 2번에 내용처럼 만약 factoryCam 이 FactoryCam 클래스에 이미 포함되어 있다면, 굳이 형변환을 하지 않고도 detectFire 메서드를 호출할 수 있어야 하지 않는지..?제가 개념을 잘못 이해하고 있을 것 같은데, 혹시 설명을 좀 부탁드려도 될까요?이 부분에 자꾸 혼동이 생겨서 다음으로 넘어가기가 어렵네요 🤣ps. 이전에 강사님 파이썬 강의로 난생 처음 태어나 클래스란 개념을 이해했던 수강생으로써, 이번 자바편도 개인적으로 큰 도움되고 있습니다. 감사합니다!
-
해결됨스프링 시큐리티 OAuth2
OAuth2 로그인 이후 통신 방법
안녕하세요.OAuth2 로그인 이후에 검증 방식에 대해 궁금한 점이 있어서 질문 드려봅니다.현재 프로젝트에서 OAuth2 를 이용하여 로그인 하는 기능을 사용하고자 하여, 강사님의 강의를 통해 OAuth2 Login을 적용시켰습니다.OAuth2 를 이용하여 회원가입을 하고, 회원가입이 완료되어 OAuth2로 로그인하면, 자체적으로 생성한 JWT Token 을 이용하여 Client 와 통신을 하는 방식으로 구현하였습니다.API 호출 마다 JWT 토큰만으로 인증을 하고 있었는데, JWT 토큰 이후 이 유저가 OAuth2(예를들어 네이버 같은 서버)에서도 유효한 회원인 지 검증이 필요하지 않을까 생각이 들었고,유저가 OAuth2 서버에서 유효한 회원인 지 검증 하는 부분을 만들고자 하는데, 내부적으로 이용할 수 있는 기능이 있는지 문의 드립니다.ClientRegistration 에 user-info-uri 를 통해 유저 정보를 가져오기 때문에, 예를 들어 oauth2_authorized_client의 accessToken을 이용하여 Naver(OAuth2)에서 회원을 간단하게 조회하고 검증 작업을 진행하면 되지 않을까 해서 내부적으로 이용할 수 있는 기능이 있을 것 같아서요..아니면 OAuth2 로그인 이후에 검증 방식에 대해서 제가 잘못 이해한 부분이 있다면 말씀 부탁 드리겠습니다감사합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
sql파일 보는법이 궁금합니다.
[질문 내용]7분 23초 쯤에 member테이블 sql파일 보신다고 무엇인가를 누르시면서 sql파일을 보신거 같은데 어떻게 보신건지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
윈도우 유저 gradlew.bat 실행 시 에러 뜹니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요? 윈도우 유저인데 cd 커맨드를 쳐서 cmd에서 spring-hello가 있는 디렉토리까지 가는 것은 성공했으나 gradlew.bat을 실행시키려고 보니ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.Please set the JAVA_HOME variable in your environment to match the location of your Java installation.이 뜨는데 어떤 조치를 취해야할까요? 감사합니다.
-
미해결실전! Querydsl
join table.as() 테이블 이름을 수정 할 수 있나요 ??
안녕하세요 querydsl 공부중인 김준엽 입니다.chatRoom에 member1 member2 연관 관계가 있다면은 querydsl에 .select(chatRoom) .from(chatRoom) .join(chatRoom.member1, member) .join(chatRoom.member2, member) .fetch(); 있다면 .join(chatRoom.member1, member.as(member1) ) 해서 select에 member1.namemember2.name구분 지어서 표현이 가능한가요 ??
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
4 : 48초에 쿼리 날라가는 거 질문입니다.
제가 셋팅을 다르게 한 건지 모르겠는데콘솔창에 create, insert쿼리는 뜨는고업데이트 쿼리는 따로 안 뜨는데이유를 알 수 있을까요?try { Address address = new Address("city", "street", "zipcode"); Member member1 = new Member(); member1.setUsername("member1"); member1.setHomeAddress(address); member1.setWorkPeriod(new Period()); Member member2 = new Member(); member2.setUsername("member2"); member2.setHomeAddress(address); member2.setWorkPeriod(new Period()); member1.getHomeAddress().setCity("newCity"); em.persist(member1); em.persist(member2); tx.commit();이건 똑같이 작성했씁니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
연속된 자연수의 합(수학) - 이렇게 풀어도 괜찮을까요?
public int solution(int n) { int answer = 0, sum = 0, lt = 1; for(int rt=1; rt <= n/2+1; rt++) { sum += rt; if(sum == n) answer++; while(sum >= n) { sum -= lt++; if(sum == n) answer++; } } return answer; }이렇게 해도 정답이 되었습니다. 문제가 풀리긴 했지만 좋은 답인지는 잘 몰라서 문의드립니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
<p> 태그의 나머지 문자 안보이는 이유
view 환경설정 강의에서 hello.html 소스 내 <p> </p> 태그 내 "안녕하세요 손님" 문자는 브라우저에서 안보이는 이유가 무엇인지 궁금합니다.
-
미해결스프링 시큐리티
spriing boot 3 .acccess() 질문입니다.
spring boot 3 로 진행시 .access() 강의하신것처럼 값이 들어가지지않는데 어떻게 넣어야하나요?
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
Switch case 관련 질문
안녕하세요.switch case(후반전) 강의 3분 30초 부분에서 궁금한 점이 생겨 질문을 남깁니다. 제가 알기로는 switch case를 사용할 때, 그 case에 해당하는 경우에만 수행 동작을 실행하는 걸로 알고 있습니다. 이 영상에서도 마찬가지로 grade를 1이라고 가정할 때, case 1은 조건을 만족하므로 price에 1000을 더해주었습니다. 하지만 그 이후 case 2를 만족하지 않음에도 불구하고 1000을 더해주고, case 3도 만족하지 않지만 1000을 더한 결과 값이 출력 되었습니다.즉, break를 넣으면 switch문을 빠져나갈 수 있다는 것은 알고 있으나, 왜 break가 없어졌다는 이유로 다음 case의 수행 동작이 실행되는지 잘 모르겠습니다. 이와 관련하여 매커니즘을 조금 더 자세히 설명해주시면 감사할 것 같습니다..!
-
미해결실전! Querydsl
Querydsl과 JPQL의 성능차이가 존재하나요?
영한님 안녕하세요!Querydsl 관련해서 몇가지 질문이 있습니다.같이 공부하고 있는 스터디원 분들께서 Querydsl을 사용하면 JPQL에 비해 성능이 좋아진다고 설명해주셨습니다.저는 강의를 듣고 Querydsl을 사용하면 JPQL로 변환되어 쿼리가 나간다고 이해하고 있었습니다. "Querydsl은 결국 JPQL로 변환되어서 DB에 쿼리가 나간다" 가 맞는지 질문드리고 싶습니다.또한 Querydsl의 가장 큰 장점은 컴파일 시점에 에러를 잡을 수 있다는 것이라고 알고 있는데, 성능적인 부분에서의 장점도 있는지 여쭤보고 싶습니다. 감사합니다!!
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
임베디드 타입에서 어떻게 Entity를 쓰는 건가요?
Person 클래스입니다.package hellojpa; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class Person { @Id @GeneratedValue @Column(name = "person_id") private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }Address 클래스입니다.package hellojpa; import javax.persistence.*; @Embeddable public class Address { private String city; private String street; private String zipcode; @OneToOne @JoinColumn(name = "person_id") private Person person; public Address() { } public Address(String city, String street, String zipcode) { this.city = city; this.street = street; this.zipcode = zipcode; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getStreet() { return street; } public void setStreet(String street) { this.street = street; } public String getZipcode() { return zipcode; } public void setZipcode(String zipcode) { this.zipcode = zipcode; } }제가 연관관계 매핑에 대해서 이해를 못하고 있는 건가요? person을 1:1 매핑을했다고 생각했습니다.
-
미해결실전! Querydsl
SpringBoot 3.0.2 버전 QueryDSL 설정문제
[질문 내용]안녕하세요. 수강생 김땡땡이라고 합니다.추가로 작성해주신 Spring 3.0 버전 설정을 적용해서 build.gradle을 작성했는데 아래와 같은 에러가 발생하면서 테스트 에러가 발생합니다. 먼저 강의내용과 수업자료를 통해서 Springboot 3.0 이상 버전에서 설정해야되는 부분들을 추가했습니다. javax관련 오류는 뜨지 않습니다. 하지만 다른 문제가 생겼는데요.. gradle >other >compileQuerydsl 을 실행하면, 문제점이 있습니다. compileQuerydsl을 통해서 생성되는 Q Class는 build 경로에만 생기고 src/main에는 생성이 되지 않는다.<build 경로 아래에는 성공적으로 Qclass 가 생성되었습니다.>하지만 src/main아래에는 생성되지 않았네요.. 그래도 build 경로아래에 QClass가 생성되어있으니 간단한 Test는 될 것 같아서 수업 내용을 따라서 작성하고 실행해봤는데. 위와 같은 에러가 발생했습니다. Qclass를 찾지못해 발생하는 오류같은데.. 왜 이런 현상이 생기는지 모르겠습니다. 강사님과 똑같이 작성했는데.. 단순 버전 문제일까요? 이런경우엔 gradle 버전도 상관이 있는건가요? 현재 사용하는 gradle 버전은 확인해보니 7.6입니다. 검색을 많이 해봐도 해결방안이 나오질 않습니다. 도움 부탁드립니다. =======================저의 build.gradle 설정========================plugins { id 'java' id 'org.springframework.boot' version '3.0.2' id 'io.spring.dependency-management' version '1.1.0' id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } group = 'study' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' // Querydsl 추가 implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" } tasks.named('test') { useJUnitPlatform() } //querydsl 추가 시작 def querydslDir = "$buildDir/generated/querydsl" querydsl { jpa = true querydslSourcesDir = querydslDir } sourceSets { main.java.srcDir querydslDir } configurations { querydsl.extendsFrom compileClasspath } compileQuerydsl { options.annotationProcessorPath = configurations.querydsl } //querydsl 추가 끝 ======================= Hello Entity =============================package study.querydsl.entity; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.Id; import lombok.Getter; import lombok.Setter; @Entity @Getter @Setter public class Hello { @Id @GeneratedValue private Long id; }
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
@RequestParam 질문드립니다
========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@GetMapping("hello-string") @ResponseBody public String helloString(@RequestParam("name") String name1){ return "hello"+name1; }위와 같은 코드와 url에서 localhost:8080/hello-string?name=springboot를 입력받았을 때파라미터 name은 key값으로서 value값인name1과 바인딩 되어 name1에 springboot를 저장 하기위한 용도로 사용되는 건가요? 다른 시각으로 name1을 key값로 springboot를 value값 생각해도 되는건가요?name - name1 - springboot(key) - (value)................(key) - (value)즉, 이렇게 이해해도 되는건가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
컨트롤러에서 레포지토리를 호출할 때 의존성
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요.주문 목록 검색, 취소 강의 2분 20초 즈음에 함수위임 정도의 간단한 행동은 컨트롤러에서 직접 호출하는 것도 고려해도 괜찮다라고 하셨는데, 이는 즉 컨트롤러가 레포지토리를 바로 의존하는 상황이여도 상황에 따라서는 괜찮다고 이해하여도 괜찮을까요 ?