inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

176만명의 커뮤니티!! 함께 토론해봐요.

필수 실습문제 '*' 출력놀이 응용 부분 관련 질문

해결됨

독하게 시작하는 C 프로그래밍

#include <stdio.h> int main(void) { for (int i = 0; i < 5; ++i) { for (int j = 0; j < 5; ++j) { if (i + j < 4) printf(" "); else printf("*"); } printf("\n"); } for (int i = 0; i < 5; ++i) { for (int j = 0; j < 9; ++j) { if (i + j < 5 || j - i > 5) printf(" "); else printf("*"); } printf("\n"); } return 0; } 이런 식으로 코드를 짰는데 제가 보기엔 제 코드에 문제가 없는데 삼각형 문제에서 출력 결과가 사진과 같이 나와요 i가 4이고 j가 8일 때 왜 "*"이 아닌 " "가 출력 되는지 모르겠어요.

  • c
  • 컴퓨터-구조
  • assembly-language
  • vc++
김곤용 댓글 1 좋아요 0 조회수 374

다형성 문제풀이2번 질문합니다.

해결됨

김영한의 실전 자바 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 다형성 문제풀이2번에서 막혀서 질문을 드립니다. 문제풀이2번을 하다가 막혀서 결국에는 영한님의 문제풀이 해답 강의나 코드를 보고는 이해는 가는데, 영한님의 말 중에 체득 이라는 말이 있는데, 체득이 안되는것 같습니다. 이럴 경우 어떻게 해야나요? 문제 해답 강의 를 계속 보는게 나은가요? 아니면 다형성 전체 챕터 강의를 다시 보면서 공부 하는게 나은지? 다른 방법이 있는지 궁금합니다. (1번문제는 그냥 쉬워서 그런지 문제 요구사항대로 잘되던데, 2번문제에서 너무 막히니 질문 드립니다.)

  • java
  • 객체지향
생각하는자 댓글 1 좋아요 1 조회수 719

Transformations import 안됨

미해결

냉동코더의 알기 쉬운 Modern Android Development 입문

androidx.lifecycle 패키지에 Transformations 가 없어서 참조가 안됩니다! Unresolved reference라고 하네용.. Deprecated 된것 같진 않은데 사용방법이 달라진걸까요? val userLD : LiveData<User> = ...; val userFullNameLD: LiveData<String> = userLD.map { user -> user.firstName + user.lastName } 공식문서에 보니 이것처럼 먼저 생성한 LiveData나 MutableLiveData 를 참조해서 map 을 사용하는데 이런식으로 사용해야할까요? +) 그리고 transformations 를 사용하는 이유나 언제 사용해야하는지? 이해가 잘 안되는데, 예시처럼 prefix나 suffix 가 필요할 때 사용하기 좋은가요? MainActivity 에서 myViewModel.liveCounter.value = myViewModel.liveCounter.value?.plus(1) 이건 원본 데이터를 조작한게 아닌건가요?

  • android
  • kotlin
  • 아키텍처
  • jetpack
성관 댓글 1 좋아요 0 조회수 624

UniqueLock과 Lock의 차이점이 궁금합니다.

해결됨

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

uniquelock은 lock_guard와 달리 std::unique_lock<std::mutex> uniqueLock(m, std::defer_lock); 를 통해 명시해놓고 자신이 원하는 순간에 uniqueLock.lock 을 할 수 있다고 이해하였습니다. 일반적인 Lock과의 차이점은 자신이 원하는 순간에 lock을 거는 것은 똑같지만 lock_guard와 같이 unlock과 같이 명시를 해주지 않더라도 일정 부분이 끝나게 되면 자동으로 unlock이 되는 것이라고 이해해도 괜찮을까요?

  • 네트워크
  • MMORPG
  • windows-server
Kimbab 댓글 1 좋아요 0 조회수 358

(one-to-many) admin.users.all() 시 출력화면

미해결

파이썬 웹 개발(Flask, SQLAlchemy 이용)

안녕하세요. 파이썬 class 부분이 약하다보니 헤매면서 개념을 잡아가며 진도를 빼고 있습니다. 한가지 좀 희안한 현상이 있는데요. 왜 이렇게 되는 지 모르겠습니다. 화면대로 따라가다가 잘 안되서 이런 저런 방법으로 개별 요소까지 넣었는데요. 강사님과 동일한 py 파일이구요. 그런데, User.query.all() 을 해보면 User 의 name 으로 출력이 안되늗데요. 왜 그런건가요? py 파일내 class User 이하 부분에 def repr (self): return '<User %r>' $ self.name 을 넣어줘야 할까요? 감사님 화면에는 해당 줄이 없어도 출력이 name 으로 나오던데요.

  • python
  • flask
  • sqlalchemy
류재안 댓글 1 좋아요 0 조회수 440

ASC의 컨테이너에 추가한 타겟 액터 질문

해결됨

이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템

이렇게 ASC 에 추가하고나서 OnDestroy() 될 때, 타겟 액터는 지우는데요. ASC의 컨테이너는 이와 관련해서 타겟 액터를 다시 뺀다던가 하는 처리를 안 해도 되는건가요??

  • unreal-engine
  • ue-blueprint
  • unreal-engine5
  • 언리얼-c++
  • gas
themoon007 댓글 1 좋아요 0 조회수 411

[HTTP 요청 데이터 - API 메시지 바디 - JSON] 강의 진행 중, logging.level.org.apache.coyote.http11=debug 를 입력하면 EOFException 발생 합니다

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

안녕하세요. 현재 섹션 2 - HTTP 요청 데이터 - API 메시지 바디 - JSON 강의를 듣고있습니다. postman을 실행하여 {"username":"hello","age":20} 를 보낼 때,properties의 logging.level.org.apache.coyote.http11=debug 의 여부에 따라 EOFException이 뜨거나 안뜨는 현상이 발생합니다! 그 이유와 해결방법이 궁금해서 질문 드립니다 !!! properties 에 logging.level.or g.apache.coyote.http11=debug 를 입력하지 않았을 경우에는 아래처럼 정상 실행됩니다. 하지만 logging.level.or g.apache.coyote.http11=debug 를 입력한 상태로, postman을 실행하면 오류가 뜹니다. 이유가 뭘까요 ?? ㅠㅠ 해결방법도 궁금합니다!

  • spring
  • mvc
dmsgpfhdns 댓글 1 좋아요 0 조회수 695

"문서"를 참조하고 활용하는 방법이 궁금합니다.

해결됨

직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피

한글 오토메이션 개발은 아래 문서들을 제공합니다. 1.ActionObject.pdf 2.HwpAutomation.pdf 3.ParameterSetObject.pdf 당연히 위 문서들은 개발할 때 참조하라고.. 친절하게 제공해주신 문서입니다. 그런데 문제는... 떠먹여줘도 사용방법을 모른다는 것입니다. 저는 기본적인 함수, 클래스, 파라미터의 활용법 등에 대해서는 이해하고 활용할 수 있습니다. 그런데 한/컴 회사에서 제공한 위 문서 3개는... 어떻게 활용해야 하는지 그 방법을 모르겠습니다. 현재 본 수업에서는 한/글 프로그램 내에서 ' 매크로 기록 /녹화 ' 기능을 활용하여 원하는 동작을 녹화한 뒤 해당 스크립트 코드를 파이썬 코드로 변환하여 활용하는 방법을 알려주셨으나. 알다시피 매크로 녹화기능시 작동하지 않는 액션들이 존재하고 이런 경우에는 이러한 방법으로 원하는 프로그램 코드를 획득할 수 없습니다 ... ㅜㅜ 이런 경우 결국 위 3개 문서를 잘 활용하여 원하는 코드를 개발할 수 밖에 없는데 ㅠㅠ 문제는 그 방법을 모르겠습니다. 결론적으로 본 온라인 강의 수업 중에 위 문서 3개를 적절히 잘 조합하여 잘 활용하는 방법을 알려주신 강의가 있다면 해당 강좌를 특정해주시면 열심히 한 번 수강을 해보고 싶습니다. ㅠㅠ 만약 본 강의에서 내용을 제공한 사실이 없다면 따로 이 방법에 대해서 온라인 강의를 판매 하실 의향은 없으신지 궁금합니다.

  • python
  • 한컴오피스
외로운코딩독학 댓글 2 좋아요 1 조회수 784

컨테이너 포트 질문

해결됨

개발자를 위한 쉬운 도커

도커 컨테이너 3개 모두 포트 번호가 다 똑같던데 클라이언트가 만약에 도메인:80번포트를 요청하면 어디로 요청이 가는건가요?

  • docker
  • 가상화
  • ci/cd
  • docker-compose
  • github-actions
  • docker-volume
  • container
인프런 댓글 1 좋아요 1 조회수 441

교안 p.46 질문

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

#include <bits/stdc++.h> using namespace std; int n; int main() { cin >> n; int a[n]; memset(a, 0, sizeof(a)); for(int i : a){ cout << i << " "; } return 0; } 여기서 선생님이 에러가 난다고 했는데, 제 컴퓨터 vscode에서는 왜 에러 안뜨고 실행이 잘 되는 이유를 알고싶습니다. 제가 리눅스 터미널에서도 실행시켜 봤는데 에러가 발생하지 않는데, 원인을 잘 모르겠습니다.

  • c++
  • 코딩-테스트
게으른개발자 댓글 1 좋아요 0 조회수 283

커스텀 로그인 페이지를 등록할 경우 LogoutFilter의 등록 여부 질문

미해결

스프링 시큐리티

안녕하세요 기선님. 강의 듣다가 질문이 생겨 질문 올립니다! http.formLogin().loginPage("/singin"); 과 같이 커스텀 로그인 페이지를 등록할 경우, DefaultLoginPageGeneratingFilter는 등록되지 않는게 맞는데, 강의 3:41초화면을 보면 LogoutFilter는 등록이 되어있는 것 같습니다. (GPT에 질문했을 때에도, LogoutFilter의 등록 여부와는 관련이 없다고 나옵니다.) 이부분 확인 부탁드리겠습니다. 혹시 이후 강의에서 이 부분을 정정해주셨다면, 죄송합니다.

  • java
  • spring
요니 댓글 1 좋아요 0 조회수 435

다운로드 소스 어디서 받나욥

미해결

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요.

  • java
  • 객체지향
영우 댓글 1 좋아요 0 조회수 718

관리자 로그인 쪽 작업하고 있는 무한루프에 빠져 오픈이 안됩니다.

미해결

Do it! Node.js 프로그래밍 입문

오류가 뜨지 않고 무한루프에 걸려 있는데 , admin 을 post 로 호출하는 페이지 뿐만 아니라 모든 페이지가 로딩 자체가 안되는데 혹시 무슨 문제가 있는걸까요 app. js 에서 아래 코드를 주석 처리하면 다른 페이지도 바로 로딩이 됩니다. app.use(cookieParser);

  • javascript
  • node.js
  • mongodb
  • express
정현우 댓글 1 좋아요 0 조회수 414

회원등록과 회원목록 조회에 에러가 있습니다

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 첫번째 회원 등록은 진행이 됩니다 하지만 두번째 회원등록시 아래의 에러가 나옵니다. Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Sat Jan 20 16:38:38 KST 2024 There was an unexpected error (type=Internal Server Error, status=500). 또한 첫번째 회원 등록 후 회원 목록에 들어가면 1 은 나오지만 이름이 나오지 않습니다. 구글 드라이브 첨부하오니 도움 부탁드립니다. https://drive.google.com/file/d/1itvcNmlya5m5Fr9h8-i0_5RjSUC9MCXX/view?usp=sharing

  • java
  • spring
  • mvc
  • spring-boot
우문식 댓글 3 좋아요 0 조회수 557

맥에서는 도커를 어떻게 사용하는건가요?

미해결

개발자를 위한 쉬운 도커

맥에서 iterm에 접속하고 docker -version을 치면 docker server의 os가 linux로 나와있어서 그때부터 의문점이 생겨 질문드립니다. 도커가 리눅스 커널(Namespace, Cgroups)를 활용하여 컨테이너를 만들고 관리하는 것 같습니다. 그런데 맥에서는 어떻게 이게 가능한건지 궁금합니다. 제 예상으로는 도커 데스크탑이 어떤 기술에 의해 리눅스명령을 도커에 실행하면 도커가 명령을 받고 필요한 시스템 콜을 요청할때 도커 데스크탑이 맥 os가 알아들을 수 있게 변환작업을 하는 것같은데 맞는 걸까요?

  • docker
  • 가상화
  • ci/cd
  • docker-compose
  • github-actions
  • docker-volume
  • container
인프런 댓글 1 좋아요 1 조회수 3032

AWS Security Groups 접근시에 AuthFailure 에러가 발생합니다

해결됨

AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)

강사님의 강의를 들으면서 모든 과정 에러없이 다 따라서 진행하였습니다. 완강을 하고 기존에 제가 따로 운영하던 프로젝트를 EC2에서 ECS 배포로 변경하는 작업을 진행하였습니다. 제 프로젝트에 ECS 배포와 Github Action 등이 정상적으로 적용된것을 확인하고 강의에서 진행하셨던 리소스들( express-ecs.com )에 대한 cluster, loadbalancer, task definition 등을 삭제하였습니다. 또한, IAM 롤에 대해서도 삭제를 하였는데 해당 리소스들을 삭제한 직후에 발생한 에러인지는 정확히 파악을 못 하였으나 그 이후로 갑자기 제가 자체적으로 만든(newdok) 로드밸런서의 Listener, Security Group에 대해서 접근 에러가 발생하였습니다. 여기까지가 현재 발생한 문제점이고 해당 내용들에 대한 2가지 질문이 있습니다. 질문 1 위 사진들을 보시면 AuthFail 에러가 발생하는데 여러 해결법들을 검색해보고 액세스 키도 새로 발급해보고 IAM 권한도 admin으로 설정해보고 여러 시도를 하였으나 해결을 하지 못하였습니다. 문제는 아무 서버와도 연결되지 않은 깡통 로드밸런서(test-lb)을 생성하여 리스너와 보안그룹을 지정해주면 해당 로드밸런서에 대해서는 AuthFail에러가 발생하지 않습니다. 만약, AWS 인증 문제라면 제가 관리하고 있는 모든 자원에 대해서 Security Group 접근 에러가 발생해야 하는데 해당 로드밸런서(newdok-lb)에 대해서만 에러가 발생하는 이유를 잘 모르겠습니다. 질문 2 두 번째 질문은 ECS Task Container의 Health Check에 대해서입니다. 첫 번째 질문에서 언급했던 에러가 발생함에도 로드 밸런서 접속(HTTP만), 연결한 도메인에 대한 접속(HTTP, HTTPS)은 정상적으로 되고 있는 상황입니다. 실제로도 ECS Cluster에 들어가보면 cluster, service, 심지어 task까지 정상적으로 작동 및 Health 상태를 반환합니다. 하지만, 마지막 사진을 보시면 Task을 들어갔을때, Container에서 Healthy가 아니라 Unknown 상태를 반환합니다. Unhealthy가 아니라 Unknown 반환의 경우 어떤 문제일까요?

  • aws
  • docker
  • ci/cd
  • aws-ecs
kjyong702 댓글 1 좋아요 1 조회수 327

매개구조체 포인터?없이 이중포인터로 원래 구조체접근

미해결

홍정모의 따라하며 배우는 C언어

안녕하세요 이 글은 제가 오개념을 가지고 그냥 운좋게 실행되는 코드를 짜낸것인지 좀 불안한 마음이 역력해서 드리는 질문글입니다. 10:51 부분이며 교수님께서 짜신 read_books2 함수는 (포인터가 널인지 아닌지 체크하는 유효성 검사 코드 같은 것들은 생략했습니다) void read_books2(const char* filename, struct book** books_dptr, int* n_ptr) { FILE* fp = fopen(filename, "r"); fscanf(fp, "%d%*c", n_ptr); struct book* books = (struct book*)calloc(*n_ptr, sizeof(struct book)); for (int i = 0; i < *n_ptr; ++i) { fscanf(fp, "%[^\n]%*c%[^\n]%*c", books[i].name, books[i].author); } fclose(fp); *books_dptr = books; } 이고, 제가 작성한 코드는 void read_books2(const char* filename, struct book** books_dptr, int* n) { FILE* fp = fopen(filename, "r"); fscanf(fp, "%d%*c", n); *books_dptr = (struct book*)calloc(*n, sizeof(struct book)); for (int i = 0; i < *n; ++i) { fscanf(fp, "%[^\n]%*c%[^\n]%*c", (*books_dptr)[i].name, (*books_dptr)[i].author); } fclose(fp); } 입니다. 전체코드는 맨 아래에 있습니다. 교수님께서는 함수 내부에 새로운 구조체 포인터 *books 를 만들어서 파일로부터 읽어들인 값들을 정리했고 그 구조체의 주소값을 *books_dptr = books 를 통해 원래 main함수 안에 있던 my_books 로 직접 넘겨주셨습니다. 그런데 저는 매개없이 가져온 주소에 직접 *books_dptr = (struct book*)calloc(*n, sizeof(struct book)); 이렇게 메모리를 조정해줬고 (교수님께서는 = 좌변에 직접 새로운 구조체 포인터를 만드셨습니다) 후에 fscanf(fp, "%[^\n]%*c%[^\n]%*c", (*books_dptr)[i].name, (*books_dptr)[i].author); 처럼 txt파일로부터 읽은 것을 함수매개변수를 통해 가져온 주소에 직접 가서 값을 넣었습니다. 혹시 이 방식에서 우려하실 부분은 없으실까요? 감사합니다. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <conio.h> #define SLEN 101 #define FILE_NAME "books.txt" struct book { char name[SLEN]; char author[SLEN]; }; void print_books(const struct book* books, int n); void write_books(const char* filename, const struct book* books, int n); struct book* read_books(const char* filename, int* n); void read_books2(const char* filename, struct book** books_dptr, int* n); int main() { int temp; int n = 3; struct book* my_books = (struct book*)malloc(sizeof(struct book) * n); if (!my_books) { printf("malloc() has failed"); exit(EXIT_FAILURE); } my_books[0] = (struct book){ "The Great Gatsby", "F. Scott Fitzgerald" }; my_books[1] = (struct book){ "Hamlet", "William Shakespeare" }; my_books[2] = (struct book){ "The Odyssey", "Homer" }; print_books(my_books, n); printf("\nWriting to a file...\n"); write_books(FILE_NAME, my_books, n); free(my_books); n = 0; printf("Done.\n"); printf("\nPress any key to read data from a file.\n\n"); temp = _getch(); read_books2(FILE_NAME, &my_books, &n); //my_books = read_books(FILE_NAME, &n); print_books(my_books, n); free(my_books); n = 0; return 0; } void print_books(const struct book* books, int n) { for (int i = 0; i < n; ++i) { printf("Book %d : \"%s\" written by \"%s\"\n", i + 1, books[i].name, books[i].author); } } void write_books(const char* filename, const struct book* books, int n) { FILE* fp = fopen(filename, "w"); fprintf(fp, "%d\n", n); for (int i = 0; i < n; ++i) { fprintf(fp, "%s\n%s\n", books[i].name, books[i].author); } fclose(fp); } struct book* read_books(const char* filename, int* n) { FILE* fp = fopen(filename, "r"); fscanf(fp, "%d%*c", n); struct book* lits = (struct book*)calloc(*n, sizeof(struct book)); for (int i = 0; i < *n; ++i) { fscanf(fp, "%[^\n]%*c%[^\n]%*c", lits[i].name, lits[i].author); } fclose(fp); return lits; } void read_books2(const char* filename, struct book** books_dptr, int* n) { FILE* fp = fopen(filename, "r"); fscanf(fp, "%d%*c", n); *books_dptr = (struct book*)calloc(*n, sizeof(struct book)); for (int i = 0; i < *n; ++i) { fscanf(fp, "%[^\n]%*c%[^\n]%*c", (*books_dptr)[i].name, (*books_dptr)[i].author); } fclose(fp); }

  • c
Echapper4 댓글 1 좋아요 1 조회수 318

(정보) mac homebrew h2 데이터베이스 설치하는 법

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. ./h2.sh: line 3: 6284 Trace/BPT trap: 5 java -cp "$dir/h2-2.2.224.jar:$H2DRIVERS:$CLASSPATH" org.h2.tools.Console "$@" 위와 같은 에러가 뜨시는 분, homebrew 삭제하거나 jdk 다시 설치하지 않고 h2 데이터베이스를 설치하는 방법이 있습니다. Homebrew 가 설치되어 있다면 이 방법을 사용할 수 있습니다. > brew install h2 > h2 -web 이 방법으로 h2 데이터베이스를 설치하고 web url을 얻을 수 있습니다.

  • java
  • spring
  • mvc
  • spring-boot
콰이엇 댓글 2 좋아요 6 조회수 951

템플릿 코드에서 if cur_v not in costs: 부분에 의문이 있습니다.

해결됨

코딩테스트 [ ALL IN ONE ]

def dijkstra(graph, start, final): # 각 노드들의 비용을 저장 costs = {} # 우선순위 큐 pq = [] # (해당위치까지 가는 총 비용, 노드위치) heapq.heappush(pq, (0, start)) while pq: # heappop을 하면 가장 작은 원소가 튀어 나온다. cur_cost, cur_v = heapq.heappop(pq) # 방문하지 않은 백터 일때만 작동 if cur_v not in costs: # costs[cur_v] = cur_cost for cost, next_v in graph[cur_v]: next_cost = cur_cost + cost heapq.heappush(pq, (next_cost, next_v)) return costs[final] 해당 템플릿 코드중에서 if cur_v not in costs: costs[cur_v] = cur_cost 어떻게 costs에 cur_v가 없다는 것 만으로 바로 최적의 경로라고 확신할 수 있는지 의문이 있습니다. heapq의 성질덕에 cur_cost, cur_v가 '지금까지 heap에 넣은 값들중에' 가장 작은 값 인거는 알겠는데 다른 경로를 통해 뒤늦게 heap에 들어간 값이 이전에 costs에 not in이여서 넣은 값보다 작은 경우도 있지 않나요?? 뭔가 제 생각에 자연스럽지 않아서 다른 코드들을 찾아보니 아래와 같이 제가 생각한 조건대로 대소 비교를 해보고 넣더군요. def dijkstra(graph,start,end): costs = {vertex:111111 for vertex in graph} pq = [] heapq.heappush(pq,(0,start)) while pq: cur_cost, cur_v = heapq.heappop(pq) if costs[cur_v] < cur_cost: continue for cost, next_v in graph[cur_v]: next_cost = cur_cost + cost if next_cost < costs[next_v]: costs[next_v] = next_cost heapq.heappush(pq, (next_cost, next_v)) return costs[end] " '지금까지 heap에 넣은 값들중에' 가장 작은 값 " 이 아니라 앞으로 나올 값 중에 가장 작은 근거가 있을까요?? - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

  • python
  • 코딩-테스트
  • 알고리즘
  • 다익스트라
김민수 댓글 2 좋아요 1 조회수 359

GenerationType.IDENTITY Null값 허용 안 되는 에러

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

안녕하세요. 기본 키 맵핑에서 GenerationType.IDENTITY 관련 부분 질문드립니다. GenerationType.IDENTITY는 PK를 입력하지 않아도 auto increment라고 해서 저절로 생성되는 거 아닌가요? 그런데 이런 에러가 떴습니다. ERROR: NULL not allowed for column "ID"; SQL statement: 답변 부탁드리겠습니다. 감사합니다! package hellojpa; import javax.persistence.*; @Entity public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "name") private String username; public Member() { // 기본 생성자가 하나 있어야 함 } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } } package hellojpa; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; import javax.persistence.Persistence; import javax.transaction.Transaction; public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); // EntityManagerFactory는 application 로딩 시점에 딱 하나만 만들어놔야 한다. // Transaction 단위로 EntityManager를 만든다. EntityManager em = emf.createEntityManager(); // 쉽게 생각하면 데이터베이스 connection을 하나 받았다고 생각할 수 있음. EntityTransaction tx = em.getTransaction(); tx.begin(); try{ Member member = new Member(); member.setUsername("Opeahchsdf"); em.persist(member); tx.commit(); } catch (Exception e) { tx.rollback(); } finally { em.close(); // 끝나면 반드시 닫아줘야 함 } emf.close(); } } <?xml version="1.0" encoding="UTF-8"?> <persistence version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd"> <persistence-unit name="hello"> <properties> <!-- 필수 속성 --> <property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/> <property name="javax.persistence.jdbc.user" value="sa"/> <property name="javax.persistence.jdbc.password" value=""/> <property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/test"/> <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/> <!-- 옵션 --> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> <property name="hibernate.use_sql_comments" value="true"/> <property name="hibernate.hbm2ddl.auto" value="create" /> </properties> </persistence-unit> </persistence>

  • java
  • jpa
이주현 댓글 3 좋아요 0 조회수 1257

인기 태그

인프런 TOP Writers

주간 인기글