안녕하세요. 종만북으로 공부해서 바텀업에 대한 이해는 하나도 없이 탑다운으로만 DP풀다가 탑다운 풀이를 적용하기 어려울때도 있는거 같아서
바텀업도 공부해보고 싶어서 갤러리로 왔습니다. 물어볼 친구가 없어서 착한 갤러리 형님들께 질문 올려봅니다. ㅜ
풀었던 문제들 바텀업 풀이를 보고 있는데 정말 하나도 모르겠습니다
.
https://www.acmicpc.net/problem/1988 문제링크 입니다.
아래 사진은 맞은 사람중 랭킹 2등님 풀이입니다.
질문 1. 저는 cache[이전에 잤는지 안잤는지][현재까지 잔 횟수][인덱스] 로 3차원으로 풀었는데, 왜 2차원도 가능한건가요?
질문 2. 코드내용중 d[3000][2]{} 의 중괄호는 무슨의미인가요?
질문 3. scanf("%*d%d%*d) 의 의미를 잘 모르겠어요.
질문 4. scanf 앞에 ~는 무슨의미인가요?
질문 5. 바텀업 풀이에서 for문을 앞에서 부터 증가시키는 것과 위 코드처럼 i=n에서 i=0까지 내려가는 경우가 있는데, 무슨차이인가요?
질문 6. for문 안에 내용 잘 모르겠습니다.
하나만이라도 알려주시면 정말 공부에 큰 도움이 될거 같습니다 ㅜㅜ..
cgiosy 본인 등판 하십시오 - dc App
문제 내용 말고 C언어 관련 부분만 답변해줌
2는 d[3000][2] = {0,} 랑 똑같은 의미인데 C++11에 새로 생긴 초기화 방법임. uniform init라고 부르고
https://boycoding.tistory.com/181
참고하면 될듯
3은 printf, scanf 설명 읽어보셈 의외로 모르는 옵션이 많을거임
4는 scanf가 입력을 받으면 받은 수만큼 리턴을 해주는데 (e.g. 수를 세 개 읽으면 3), 루프를 보면 1을 계속 리턴하다가 문제에서 입력이 끝나면 입력을 더 못받아서 0을 리턴하게 될거임. 그러면 루프가 더 이상 실행되지 않겠지. ~는 비트연산자인데 C언어 배울때 기억을 잘 되살려보면 될거임
그리고 제목 너무 길어서 잘 안보이니까 질문 분류만 달고 나머지는 지워주면 좀 더 좋을거같음
친절한 답변 너무 감사드립니다!!
글 제목도 수정했습니다
해당 댓글은 삭제되었습니다.
너무 감사드립니다..진짜 감사드립니다
저분은 숏코딩 코드가 너무 많으셔서... 보기 빡셈
제가 초보자라서 평범한 코드를 이해잘 못하는줄 알았어요 감사합니다 - dc App
cgiosy 코드는 거르셈; 고등문법으로 코드 압축적으로 짜는 사람 중에 하나임 봐도 이해 못할 확률 100%
감사합니다 - dc App
해당 댓글은 삭제되었습니다.
아하!!!!! 이해됐습니다 넘넘 감사드려요 ㅠㅠㅠㅠ - dc App
외계어다..!