inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

버퍼 관련

미해결

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

2:30초 쯤에 관련된 질문입니다. 많은 질문들과 답변을 본 이후에도 확신이 가지 않는 부분들이 있어 질문드립니다. Q1) 's' = 스페이스바 최초 A's'3's'3's'\n를 입력하게 되면 scanf의 경우 개행문자 즉, 공백을 만나는 순간까지만 변수에 저장하는 것으로 알고 있습니다.(이것 또한 맞는지 잘모르겠네요.) 그렇기 때문에 버퍼에 |A| |3| |3| |\n|가 입력되지만 마지막 3 이후에 's'에 의해 마지막 \n는 버려지고 마지막| |까지만 변수에 저장되는 것이 맞나요?? Q2) Q1이 맞다면 처음 루프가 돌고 현재 버퍼에 | |가 남아 있는 상태에서 두번째 입력 B's'1's'2's'를 받게 되면 버퍼에 | |B| |1| |2| |가 버퍼에 남게 되는 것이 맞나요?? Q3) Q2)가 맞다면 함수로 진입했을 때 cr에 해당하는 문자는 's' 즉, 공백이 되고 그 다음 변수 자리에 또 문자가 들어오기 때문에 새롭게 초기화 되지 않고 기존의 3, 3을 입력하게 되는게 맞는지, 이전의 's' 공백이 해결되고 다시 루프로 진입하여 그 전에 입력된 B 1 2를 처리하는 것인지 궁금합니다. Q4) 추가로 scanf("%c%d%d")와 scanf("%c %d %d")의 차이도 궁금합니다. 또 버퍼에 문자들 사이사이에 's' 즉, 공백의 경우 어떻게 처리되는 건지 궁금합니다. 아직 초보자라 질문의 의도가 정확히 전달되지 않을 수 있을 것 같습니다 이해 안가시는 부분은 다시 한번 알려주시면 감사하겠습니다.

  • c
b0i4s 댓글 1 좋아요 1 조회수 598

return n*recursive_factorial은 뭘 리턴하는거죠?

미해결

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

long rc_fact(int n) { if (n >= 1) { return n * rc_fact(n - 1); // tail recursion else return 1; } 저는 recursive_factorial을 그냥 rc_fact로 줄여서 했습니다 루프를 활용한 팩토리얼은 맞췄는데 그땐 결과값을 ans에 리턴한다해서 return ans;라고 하신게 이해가 잘 되었습니다. 근데 return n * rc_fact(n - 1) 여기가 이해가 안됩니 n에 5라는 값이 들어오고 5>1이므로 if 안으로 들어갈 텐데 뭘 반환해서 어디에 집어넣는다는건가요? 5*rc_fact(4)라는 값을 다시 int n에 집어넣겠다는건가요? 그리고 안에 다시 꿈속의 꿈처럼 rc_fact(4)를 진행하고 그 rc_fact(4)에선 또 4*rc_fact(3)을 반환하고 반복하는 것이라고 이해를 했습니다. 하지만 어떤 값을 어디로 return 하겠다는 것인지는 아직 이해를 못했습니다. 이 rc_fact(5) 함수의 결과값이 5*rc_fact(4)인건가요? 즉 최종적으로 rc_fact(5) 함수의 결과값이 바로 5*4*3*2*1*rc_fact(0)이 되어서 120이라고 봐야할까요

  • c
ILLIP 댓글 1 좋아요 1 조회수 346

영속성 전이 설정

미해결

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

영상 제일 마지막에 영속성 전이 설정 하는 부분에서 OrderItem이 Item과도 연관이 되어있지 않나요?~ OrderItem을 Order에 cascade해도 상관없는 걸까요?

  • java
  • jpa
coolcool35 댓글 1 좋아요 1 조회수 395

15강 Block ID 예제 오류 질문입니다.

해결됨

CUDA 프로그래밍 (2) - C/C++/GPU 병렬 컴퓨팅 - 벡터 vector 더하기

안녕하세요? Jetson TX2 및 Xavier를 사용하여 CUDA예제를 실행하고 있습니다. Block 예제에서 tx2와 xavier의 결과가 달라서 질문드립니다. dimgrid<<<2,2,1>>>에 의해 Block의 갯수가 4개가 되고, warpid=0인 영역은 blockid가 (0,0), (1,0), (0,1), (1,1)인 곳에서 총 4개가 있을 것입니다. 하지만 Tx2에서 예제를 돌려본 결과 blockid가 (0,0), (1,0)인 곳에만 나옵니다. 혹시나 해서 xavier에서 실험을 해본 결과 총 4개가 나와 정상적으로 출력됩니다. CUDA언어는 GPU구조와 상관 없이 출력되기 위해 grid-block-thread 구조를 가지므로 속도는 느리지만 동일한 결과를 출력해야하는데, 왜 tx2와 xavier가 같은 예제를 돌렸는데도 다른 결과가 나오는걸까요? (혹시나 해서 <<<2,2,1>>> => <<<4,1,1>>>로 변경하여 돌려봤지만 여전히 tx2에서 blockid 2개만 출력되었습니다.)

  • c
  • c++
  • cuda
  • gpu
  • 병렬-처리
rkdghrk12 댓글 1 좋아요 0 조회수 379

4:15에 나오는 float round-off문제에서 든 생각입니다

미해결

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

float a = 0.01f; 변수 a를 이렇게 초기화 하면 실제 a에는 0.01이 아니라 0.009999999776이 담깁니다. printf("%f", a);를 했을 때 0.010000이 나오는 이유가 0.009999999776이 소수점 일곱번째자리에서 반올림 되어서 그렇게 출력되는게 맞는가요?

  • c
황진석 댓글 1 좋아요 1 조회수 393

ptr1와 &ptr1의 차이점

해결됨

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

안녕하세요~ 강의 1분40초 쯤에 printf("%p %d %p\n", ptr1, *ptr1, &ptr1); 코드를 출력하면 값이 002AFAEC 100 002AFAE0 이렇게 나옵니다. ptr1이랑 &ptr1이랑 arr[0]의 주소를 출력하는 걸로 알고 있는데 다르게 나오는 걸로 보니 제가 잘못 알고 있는 거 같습니다ㅠ ptr1 이랑 &ptr1 을 출력하면 값이 다르게 나오는데 이 둘의 차이는 무엇일까요? 헷갈리네요 아래에 코드도 첨부해 놓았습니다. int main() { int arr[5] = { 100, 200, 300, 400, 500 }; int* ptr1, * ptr2, * ptr3; ptr1 = arr; printf("%p %d %p\n", ptr1, *ptr1, &ptr1); // 002AFAEC 100 002AFAE0 }

  • c
wnsgh5049 댓글 1 좋아요 1 조회수 393

트랜잭션 롤백 시 Insert 쿼리

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 위와 같이 테스트를 구현하고 테스트 실행 시 Insert 쿼리가 나갑니다. 그런데 예외가 발생했기 때문에 롤백이 되어서 또는 테스트의 트랜잭션 디폴트 값이 Rollback이라서 Insert 쿼리가 나가지 않아야 하는 것 아닌가요?

  • java
  • spring
  • spring-boot
  • jpa
엽엽 댓글 1 좋아요 0 조회수 939

MONTHS나 YEARS로 나눌때, double을 쓰신 이유가 뭔가요??

미해결

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

해당 문제에서 평균 온도를 구하실때 avg_temp /= (double)MONTHS; avg_temp /= (double)YEARS; 이렇게 작성하셨는데, (double)을 추가하신 이유가 있을까요?? 없어도 잘 작동하여서 여쭤봅니다. 답변해주시면 감사하겠습니다.

  • c
ohjaehokor 댓글 1 좋아요 1 조회수 448

Task :test FAILED이 뜹니다.

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] gradlew build를 하면 이런 에러가 발생합니다. 인텔리제이 설정에서 build Tools > Run tests using 항목을 IntelliJ IDEA로 변경을 해보았으나 에러는 동일하게 발생했지만 해결책을 모르겠습니다.

  • java
  • spring
  • mvc
  • spring-boot
임찬휘 댓글 1 좋아요 0 조회수 1211

db에서 Join vs 애플리케이션에서 조합

미해결

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

========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 제가 한 게시판에서 이런 글을 읽었습니다. "요즘에는 논리적인 연관관계는 만들지만 db에서는 만들지 않고 조인 연산을 거의 안 하고 여러 번 쿼리해서 애플리케이션에서 조합합니다." 이유로는 연관관계를 맺으면 테이블 설계에 있어 유연성이 떨어짐 조인연산은 db 자원을 많이 잡아먹는 무거운 연산이고 db 성능에는 한계가 있어 서버를 확장해서 자원을 쓰는 것이 유리함 라는 근거를 들었습니다. 이것이 맞는 판단인지 궁금합니다 (금융권에 계신 분이 쓴 듯 합니다)

  • java
  • jpa
dudwns328 댓글 3 좋아요 2 조회수 3597

32-2의 warp의 early terminate에 대해 질문드립니다.

해결됨

CUDA 프로그래밍 (5) - C/C++/GPU 병렬 컴퓨팅 - 아토믹 연산 atomic op

안녕하세요! 정말 재미있게 강의를 보고 있습니다. 그런데 강의 32-2를 보다 궁금증이 생겨 질문 드립니다! warp의 early terminate가 정확히 어떤 동작인지 궁금한데요. 제가 생각해 볼 때 __syncthreads() 함수를 호출하게 되면, 블록 내 모든 스레드가 해당 함수에 도달하기까지 대기해야 하고 그러면 뒤에 더 이상의 동작이 없는 Warp들이라 하더라고 해당 함수에서 대기하고 있는 상태여야 할거 같습니다. 따라서 그러면 해당 warp는 다른 warp들이 동작을 마칠때까지 기다리게 되어 리소스를 반환하거나 하는 동작이 없을거 같은데 왜이렇게 성능이 향상되는지 궁금합니다.

  • c
  • c++
  • cuda
  • gpu
  • 병렬-처리
박 신석 댓글 1 좋아요 0 조회수 381

버퍼 지우기에 대해 질문있습니다

미해결

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

8강부터 계속해서 입력한 값이 버퍼에 들어가있을때 원활한 루프 반복을 위해 버퍼에 들어가있는 값들을 비워내는 과정을 하는 것을 배웠습니다. while (getchar() != '\n') continue; 근데 맨처음에 scanf와 printf, 그리고 while에 대해 배웠을때는 왜 위의 단계를 거치지 않았는데도 반복이 됐던거죠? int c=0; while(1) { scanf("%d", &c); printf("%d",c); } 이런 것들은 왜 버퍼를 비우지 않았는데도 반복이 되나요, 위의 예시와는 달리 얘는 입력받은 것도 c고 출력하는 것도 c니까 버퍼에 있는게 남김없이(엔터까지) 모두 출력되어서 그런건가요

  • c
ILLIP 댓글 1 좋아요 1 조회수 462

main.o 파일을 생성하고 또 실행파일을 만드는 이유가 궁금합니다

미해결

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

main.c파일을 컴파일 해서 main.exe 파일이 만들어졌는데 이후에 main.o파일을 만들고 나서 왜 main.o에 대한 실행파일을 만드는 건지 궁금합니다 gcc -c main.c는 컴파일만 하고 실행파일은 생성이 안 되니까 실행파일을 더 만드는 것까진 알겠는데 왜 obj파일을 또 컴파일 해서 obj파일로 실행파일을 만드는지가 궁금합니다 main.c를 컴파일 => main.exe main.c의 obj 파일 생성 => main.o main.o를 컴파일 => exe_from_obj.exe 이 중에 1,2번만 해도 obj파일과 exe파일이 생성된 것이니 더 생성해야될 파일이 없는 것이 아닌가요...?

  • c
sara0099 댓글 1 좋아요 1 조회수 1672

H2 실행 반응없음 윈도우

미해결

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

안녕하세요 처음 강의를 들을 때 h2 데이터베이스를 설치하여 진행하였을 때는 잘 진행되었는데, 강의를 다시 들으며 h2를 실행시켜보니 갑자기 실행이 되지 않습니다. 환경변수는 잘 설정되어있고 명령 프롬프트로 질문들 검색해서 나온 모든 해결방법을 실행해보았는데, 반응이 없고 h2 console 바로가기를 클릭해도 반응이 없습니다... 백신관련은 제거했습니다. 14.200 말고 최근버젼으로도 도전해봤습니다. 어떻게 해야 해결될까요?ㅠㅠ https://www.inflearn.com/questions/543652/%EC%9C%88%EB%8F%84%EC%9A%B0-h2-console-bat-%EC%8B%A4%ED%96%89-%EC%95%88%EB%90%A8-%ED%95%B4%EA%B2%B0%ED%95%A8 *이 방법도 시도해봣으나 안됩니다 C:\tools\h2\bin>/"h2.bat" '/"h2.bat"'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.

  • java
  • spring
  • mvc
  • spring-boot
유정 댓글 2 좋아요 0 조회수 1347

재귀호출 질문입니다

미해결

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

n=4가 되었을 때 이처럼 함수가 중첩된 상태라고 저는 이해했고, n=4가 되어 if문에 들어가지 않게 되자 원래 myfunc함수에서 if(n < 4)//stop condition my_func(n + 1); printf("Level %d, address of variable n = %p\n", n, &n); 이 부분에 있는 myfunc때문에 이 밑에 있는 printf("Level %d, address of variable n = %p\n", n, &n); 가 4번 실행 못한 상태가 되었기 때문에 지금 기준 20, 21번 줄을 반복하면서(처음에 중첩되면서 못 돈 부분들을 돌고 있음) myfunc함수가 myfunc안에 없었다면 이런일도 없었겠지만 안에 있는 myfunc함수 때문에 출력이 못된 부분들이 마지막에 순차적으로 나오는 것이라고 이해하면 될까요?

  • c
Organ 댓글 1 좋아요 1 조회수 651

Spring Boot 3.X distinct 관련

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 주문 조회 V3: 엔티티를 DTO로 변환 - 페치 조인 최적화 Spring Boot 3.2버전에서 실습 중에, distinct 옵션을 사용하지 않고도 distinct 옵션을 넣은 것처럼 Row가 2줄 출력됩니다. 이것저것 코드를 확인하다가 Spring Boot를 2.x 버전으로 내린 후에 다시 확인해보았는데, 그제서야 강의에 나오는 것처럼 중복 데이터 4개가 나옵니다. 혹시 이것 관련해서 jpa에서 업데이트가 된 것인지요..? 검색 능력이랑 문서 능력 찾아보는 능력이 딸려, 한참 찾아보다 여기에 질문합니다 ㅜㅜ 실례가 안된다면 이러한 내용을 어떻게 찾는지도 알게 될 수 있다면 좋을거 같습니다!

  • java
  • spring
  • spring-boot
  • jpa
shovel 댓글 1 좋아요 4 조회수 1926

ArrayList, LinkedList, HashMap 등 및 이들의 메소드들 add(), set() 등에 대해 깊이있게 알고싶습니다...ㅎ

해결됨

나도코딩의 자바 기본편 - 풀코스 (20시간)

안녕하세요, 나도코딩 선생님...ㅎ 어제 나도코딩 자바편에서 남은 나머지 강의인 Thread 부분과 섹션 10. 제네릭스 (Java Collections Framework)를 다 듣고 완강한 다음 복습 중에 궁금증이 생겨 이렇게 질문을 남깁니다. 나도코딩 파이썬 강의를 완강한 이후로 또 다른 강의를 다 끝내고 나니 기분이 매우 좋습니다 ㅎㅎ (1) 우선 add와 set과 관련된 질문입니다. Java documentation을 보면서 java.util.List에서 add는 object를 추가하는 것 외에도, add(int index, object e)를 통해 특정 위치(index)에 특정 객체(object)를 넣기도 가능 하고, set도 마찬가지로 set(int index, object e) 형태로 같은 역할을 수행 하는데, add와 set를 따로 나눈 것은 add는 단순하게 리스트 안에 객체를 넣는 것이 초점인 반면, set는 리스트 안에 들어있는 '기존 데이터들이 가진 순서 변경의 목적' 이라서 그런건가요? (2) 지금까지 제네릭스를 공부하고 제가 이해한 바로는 LinkedList 랑 ArrayList 두 가지 리스트 모두 데이터 순서를 가지고, ArrayList는 데이터를 쓰고 저장하는 것은 알고리즘 시간 복잡도상 O(n)이기 때문에 속도가 느리지만, 읽기(O(1))는 빠른 반면, LinkedList는 데이터를 읽는 속도(O(n))는 느리지만, 리스트 중간에 데이터를 쓰고 저장하는 것(O(1))은 빠르다면, 이 둘의 특성들을 어느 때 쓰는 것이 가장 적합한가요? 또한 ArrayList와 LinkedList를 각각 '메모가 많은 공책', 예전에 있었던 '포털 사이트 실시간 검색어 순위'로 비유해서 개념을 이해하는 것도 괜찮을까요? - 제 스스로 이해를 돕기위해 나름 저만의 비유를 적어봤습니다...ㅎ 메모가 많은 공책 (ArrayList) : 책 한 장안에 많은 메모들을 볼 수 있어서 읽기는 빠르지만, 메모를 쓰려면 최소 6-7장은 넘겨야 한다. 실시간 검색어 순위 (LinkedList) : 순위가 주기적으로 (주로 1시간 단위) 변해서 자료들을 빨리 반영하기는 힘들지만, 실시간 순위인 만큼 빠른 자료 수집 및 추가는 확실하다. (3) HashMap도 또한 일반적으로 어디에 가장 적합 한가요? 이를 테면 제가 원하는 특정 문자에, 특정 정수(Integer) 값을 할당하는 용도로 HashMap을 써도 괜찮을까요? 혹시 몰라 아래처럼 제 나름대로 코드를 적어봤습니다...ㅎ ... // 이미 import java.util.Map; 되어있음. HashMap<String, Integer> gameMoves = new HashMap<>(); gameMoves.put("R", 0); // gameMoves.remove("R"); 이렇게 키도 삭제 가능 gameMoves.put("D", 1); gameMoves.put("L", 2); gameMoves.put("U", 3); System.out.println(gameMoves.size()); // 4 그리고 위의 예시 처럼 remove("R");을 통해 키 값을 없애면 (HashMap gameMoves에 저장된 String), HashMap gameMoves의 value값은 그대로 살아있는가요? 아니면 null로 처리가 되나요? 스스로 공부하면서 얼핏 본 바로는 key값이 사라지더라도 map의 value는 계속해서 쓸 수 있다고 본거 같은데, 이 부분도 확실하게 제 스스로 짚고 넘어가고 싶습니다! 추가적으로 강의를 들으면서 제네릭스 전반적인 개념을 제 나름대로 그림도 그려가면서 이해를 해봤습니다...ㅎ 제대로 이해했는지 알고 싶어서요...ㅎ 앞으로도 강의 많이 찍어주세요!...ㅎ 항상 감사합니다!

  • java
  • 객체지향
  • 컬렉션프레임워크
  • arraylist
  • LinkedList
  • hashmap
  • 제네릭스
댓글 1 좋아요 0 조회수 717

조건문에 c == 'a' 대신에, c == 'a' | 'A' 를 하면 에러가 발생합니다

미해결

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

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int printfMenu() { printf("Enter the letter of your choice:\n"); printf("a. avengers "); printf("b. beep\n"); printf("c. count "); printf("d. quit\n"); } int selectA() { printf("Avengers assemble!\n"); } int selectB() { printf("\a"); } int selectC(){ int n; printf("Enter an integer:\n"); scanf("%d", &n); for (int i = 1; i <= n; i++) { printf("%d\n", i); } } int clearBuffer() { while (getchar() != '\n') continue; } int main() { char c; while (1) { printfMenu(); c = getchar(); printf("%c", c); if (c == 'a'|'A') { selectA(); } else if (c == 'b'|'B') { selectB(); } else if (c == 'c'|'C') { selectC(); } else if (c == 'd'|'D') { break; } else { printf("Wrong input. try again.\n"); } clearBuffer(); } return 0; } 강의 전에 혼자 만들어본 코드인데요. 그 전에는 모든게 정상작동되었는데, 기존의 " if(c == 소문자알파벳)" 에서 " if(c == 소문자 | 대문자 )" 로 변경하면 scanf에 무엇을 입력하던지 if (c == 'a'|'A') 가 true가 되어 실행됩니다. c에 입력이 잘못들어가는지 F10으로 확인해보려고 printf("%c", c); 코드도 추가해서 찍어봤는데, c = 'B' 처럼 변수에 제대로 저장되어도, 조건문 if (c == 'a' | 'A')가 실행되네요. 제가 무엇을 잘못한건가요?? 어떻게 고칠수 있을까요 ?? 답변 부탁드리겠습니다 !

  • c
ohjaehokor 댓글 1 좋아요 2 조회수 367

8.8 질문있습니다

미해결

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

밑 부분 getfirstchar 함수부분 질문입니다. while((ch = getchar()) != '\n') continue; ch = getchar(); while (getchar() != '\n') continue; 윗 부분이 제가 한 것이고 밑 부분이 정답인데 제 것을 복사해서 정답예제에 바꿔 넣어서 하니 넘어가지 않고 try again부분이 계속 반복됩니다 이 부분이 문제가 있는건 맞는데 왜 문제가 생기는지 정확하게 모르겠어요 ㅜㅜ

  • c
Organ 댓글 1 좋아요 2 조회수 299

생성메소드

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

생성메소드에 대해 잘 이해가 안가네요 어떨때 사용하게 되는건가요?

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
wxogud3377 댓글 1 좋아요 2 조회수 918

인기 태그

인프런 TOP Writers

주간 인기글