inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

2-T

2-T 질문있습니다 :)

해결된 질문

161

한유태

작성한 질문수 79

0

안녕하세요 선생님 🙂

선생님께서 알려주신대로 무식하게 풀 수 있는 방법부터 생각하는건 되기 시작했는데요, 아직 시간복잡도까지 고려하는 수준은 아닌가 봅니다 ㅠㅠ

 

강의를 듣고 아래의 방식의 시간복잡도가 굉장히 커진다는 것은 이해를 했습니다. 그래도 출력 값이 정답이라고 생각을 했는데요, 디버깅을 해보니 2중 for문을 사용하는 부분에서 i가 1인 경우를 인식하지 못하고 바로 i가 2인 경우로 넘어가지더라구요. 그러다보니 첫 번째 테스트케이스는 올바른 답으로 출력이 되지만, 두 번째 테스트케이스는 오답이 나오고 있습니다. 한참을 봐도 제가 무엇을 실수한건지 잘 모르겠습니다..ㅠ 조언 부탁 드립니다 :)

 

https://www.acmicpc.net/source/share/65830377ec624e879c48d979af5762d4

c++ 코딩-테스트

답변 1

1

큰돌

안녕하세요 유태님 ㅎㅎ

	for (int i = 1; i <= N; i++)
	{
		result[i] = arr[i];

		for (int j = i; j <= N; j++)

이 로직 전에 처음 result를 -1로 초기화를 해야합니다.

 

		for (int j = i; j <= N; j++)
		{
			temp[j] = max(arr[j], arr[j + 1]);
			
			if (result[i] < temp[j])
			{
				result[i] = temp[j];
				break;
			}
			else result[i] = -1;

오큰수란 의미에 맞게 그보다 큰수를 발견하면 그 즉시 그 값으로 설정하고 종료를 해야 합니다.

 

즉, temp (배열 안써도 됩니다.)에 지금의 값 arr[i]를 걸어놓고 그 다음 j부터 찾으면서 큰값 찾으면 result에 값을 할당하고 break;를 걸어야 합니다.

temp = arr[i]

for j = i + 1 ...

이런식으로 구축이 되어야 합니다.

 

이렇게 해보시겠어요?



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

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

감사합니다.

강사 큰돌 올림.


0

한유태

로직이 조금 어긋났었던거였군요! 감사합니다 :)

코딩살구클럽 가입 문의

0

17

1

코딩 살구 클럽 컴파일 에러

0

11

1

추천 문제

0

16

1

코딩살구클럽 승인

0

18

1

코살구 1주차 1940번 문제 조건과 프라이빗 테스트 불일치 문의

0

28

2

문제를 고민하는 시간 관련

0

27

2

코딩살구클럽

0

40

2

코딩살구클럽 문의

0

44

2

코딩살구클럽 승인

0

37

2

DP 경우의 수 설명이 이해가 되지 않습니다.

0

34

2

3-F 채점 관련 질문

0

32

1

BFS, DFS 활용이 되는 상황에서의 방향성

0

34

2

코딩살구클럽 승인

0

45

2

코딩살구클럽승인

0

39

3

코딩살구클럽 승인

0

56

2

3-D 관련 질문

0

35

2

코살구 회원가입 문의

0

45

2

코살구 로그인 문제

0

65

2

3-A 문제 풀이 관련 질문

0

56

3

2-O 질문 있습니다

0

38

2

2-T 문제에 관한 질문

0

40

2

코딩 살구 클럽 접속 및 사용방법 문의

0

66

2

안녕하세요~. 현재 코살코딩클럽 사이트가 접속이 안됩니다~

0

67

2

코딩살구클럽 로그인문제

0

85

3