inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

2-S

2-S 1325번 효율적인 해킹 문제 질문

389

워니

작성한 질문수 3

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

http://boj.kr/d5dbeef9edfd46d4b6ca8eda86668fcd

문제는 해결했는데 궁금한 점이 생겨 질문 드립니다.

  1. 23번째 줄에서 배열 초기화 할 때 fill함수가 아닌 memset함수를 사용해야 하는 이유가 궁금합니다.

  2. fill함수를 쓰면 출력 결과가 안 나오는데 어떤 문제 때문에 그런건지 궁금합니다. 코드에 문제가 있는 건가요?

    -> fill(&visited[0], &visited[0]+10001*10001, 0);

 

 

c++ 코딩-테스트 C++ 코테 준비 같이 해요!

답변 2

1

Kyoung Jun Kim

1차원 배열인데, fill(&visited[0], &visited[0]+10001*10001, 0);

10001*10001 이 아니라 10001 이 되야할 것 같습니다.

0

큰돌

안녕하세요 워니님 ㅎㅎ

KIM님이 설명을 잘해주셨는데요. ㅎㅎ

첨언하자면 다음과 같아요.

일단 fill, memset 둘 다 비슷합니다. 다만, memset의 경우 0, -1이란 값으로 초기화 할 때만 사용할 수 있고 fill은 모든 값이 가능하니 해당부분 참고해서 써주시면 되구요.

교안을 잠시 볼까요?

fill()은 O(n)의 시간복잡도를 가지며 fill(시작값, 끝값, 초기화하는값)로 값을 초기화합니다. 모든 값을 기반으로 초기화가 가능합니다. 

void fill (ForwardIterator first, ForwardIterator last, const T& val);

 

자, 시작값과 끝값이 들어가죠?

워니님이 선언하신 이 배열이요.

int n, m, a, b, visited[10001], mx,dp[10001];

visited의 끝값은 얼마일까요?

visited[10000]이 아닐까요?

여기서 fill의 두번째 인자는 "포함하지않는" 끝값이기 때문에 visited[10001]을 넣습니다. 그렇게 해서 visited[10001] 이전인 visited[10000]까지 초기화를 되게 만드는 것이죠.

	for (int i = 1; i <= n; i++) {
		fill(&visited[0], &visited[10001], 0); 

즉 앞의 코드와 같이 하시면 되구요. 또

	for (int i = 1; i <= n; i++) {
		fill(visited, visited + 10001, 0); 

이렇게도 가능하니 참고해주세요. ㅎㅎ

또한 fill 부분 설명이 교안 내에 좀 헷갈리게 설명되어있는 것같은데 해당 부분은 업데이트하도록 하겠습니다.

또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.

2-I) 왜 이 문제가 그래프이론 카테고리에 있는지 잘 모르겠습니다.

0

40

2

2주차 개념#12 트리 순회

0

22

2

백준사이트가 종료된다고 합니다.

0

266

2

백준 서비스 종료

9

840

1

sk 하이닉스 코테 대비

0

366

2

3-G 최댓값 질문

0

50

1

모듈러 연산 값이 10이 아닌 경우도 있지 않나요?

0

82

2

3-I 코드 질문드립니다.

0

62

2

3-N 질문 있습니다.

0

66

2

학습방법

0

101

2

4-H 질문 있습니다 (코드 리뷰)

0

66

2

코딩테스트 어디까지 준비해야 하는지 질문이 있습니다.

0

167

2

2-O 반례가 무엇일지 어떤 부분이 틀렸는지 잘 모르겠습니다.

0

69

2

2주차 개념 #4-2. 인접행렬 질문있습니다.

0

64

2

1-A 문제풀이 후 궁금한 점이 생겨서 질문드립니다.

0

50

2

조합 재귀 풀이 확인 해주시면 감사하겠습니다.

0

67

2

함수별 시간복잡도

0

72

2

3-h 질문입니다.

0

49

1

안녕하세요 선생님. 시간 복잡도 4번 질문있습니다.

0

53

2

1-I 문제 질문 드립니다.

0

76

2

2-P 질문입니다.

0

56

1

mac에서 시작하기 관련

0

91

2

5-Q 질문

0

63

2

풀이 코드 질문

0

64

2