inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

5-T

5-T 질문있습니다

174

요가인

작성한 질문수 35

0

  1. 시간관련 질문 --> 모든 칸을 뒤지면서 속도만큼 for문을 돌린다고 했을 때 최대값으로 계산을 하면 100 * 100 * 1000 =1000만이 나오는데 시간초과가 나온다고 하셨는데 그 이유가 무엇일까요 ?

  2. 제가 짠 로직을 테스트케이스와 찾아본 모든 반례를 넣어도 통과가 되는데 틀렸다고 나오는데 이유를 알고싶습니다.

 

http://boj.kr/22beb014767543189300a4a0fb48b227

 

c++ 코딩-테스트

답변 1

0

큰돌

안녕하세요 가인님ㅎㅎ

잘 짜셨는데요.. ㅎㅎ

이건 고쳐도 시간초과가 나는 로직입니다.

일단은...

  1.  

    for (int i = 1; i <= C; i++)
    {
        // 땅과 가장 가까운 상어 잡기
        for (int j = 1; j <= R; j++)
            if (adj[j][i])
            {
				ret += mp[adj[j][i]].z;
                adj[j][i] = 0;
                break;
            }

		SharkMove();

일단 C 가 중복되는 로직입니다.

 

  1. 상어의 움직임 로직을 개선해야 합니다.

				for (int i = 0; i < shark.s; i++)
				{
					int nextY = nowY + shark.dirY;
					int nextX = nowX + shark.dirX;

 

이부분을 고친 후 다시 질문 부탁드려도 될까요?

 

시간초과 관련답변 :

가인님 말씀이 어느정도 이해가 갑니다.

문제범위를 보시면 s는 1000이기 때문에 사실상 그렇게 어? 시간이 많이 드나 라고 생각이 들 수 있습니다.

당연하죠. ㅎㅎ 저도 처음에 그랬습니다...

처음에는 저도 이런 식으로 구현을 했는데 -> 시간초과 떠서 고친 코드입니다.

제출시 시간초과가 뜬다면 개선해야겠다 하고 -> 수학적 개념을 써서 개선해야 합니다.

 

문제범위 :

둘째 줄부터 M개의 줄에 상어의 정보가 주어진다. 상어의 정보는 다섯 정수 r, c, s, d, z (1 ≤ r ≤ R, 1 ≤ c ≤ C, 0 ≤ s ≤ 1000, 1 ≤ d ≤ 4, 1 ≤ z ≤ 10000) 로 이루어져 있다. (r, c)는 상어의 위치, s는 속력, d는 이동 방향, z는 크기이다. d가 1인 경우는 위, 2인 경우는 아래, 3인 경우는 오른쪽, 4인 경우는 왼쪽을 의미한다.


감사합니다.

0

요가인

1번답변으로 C가 중복되는 로직이라고 했는데 이게 무슨뜻인지 이해가 가질 않습니다.

 

상어 움직임이 가는 부분이 시간초과가 나는건 이해가 되는데 그렇다면 제출시 틀렸습니다 가 아닌 시간초과가 나와야하는데 틀렸습니다 나오는 이유를 모르겠습니다.

1

큰돌

안녕하세요 가인님 ㅎㅎ

 

1번답변으로 C가 중복되는 로직이라고 했는데 이게 무슨뜻인지 이해가 가질 않습니다.

>> 이 답변은 잘못드린 것 같습니다. 원래는 M을 기반으로 상어무빙을 해야 하는데 R*C를 기반으로 하셨기 때문에 괜찮습니다.

 

상어 움직임이 가는 부분이 시간초과가 나는건 이해가 되는데 그렇다면 제출시 틀렸습니다 가 아닌 시간초과가 나와야하는데 틀렸습니다 나오는 이유를 모르겠습니다.

>> 네 맞긴합니다만.. 저도 딱히 틀린 부분이 안보여서요.. 이럴 때는 시간초과가 분명한 로직을 고치고 다른 나머지 부분을 고치는 방향으로 가야 합니다. 그리고 이 코드에서 가장 로직이 복잡한 부분이 상어 움직임 부분이고 이부분을 고치면 -> 맞게 될 확률이 높다고 생각합니다.

 

감사합니다.

교안 158페이지 문의드립니다

0

20

2

코딩살구클럽 관련 건의사항

0

39

1

코살에 19942 다이어트 문제에 N의 범위가 빠져있슴니다

0

21

1

진행 방법 질문드립니다!

0

52

2

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

0

58

2

2주차 개념#12 트리 순회

0

27

2

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

0

287

2

백준 서비스 종료

9

893

1

sk 하이닉스 코테 대비

0

368

2

3-G 최댓값 질문

0

51

1

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

0

83

2

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

0

62

2

3-N 질문 있습니다.

0

66

2

학습방법

0

102

2

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

0

66

2

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

0

172

2

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

0

69

2

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

0

64

2

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

0

51

2

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

0

68

2

함수별 시간복잡도

0

73

2

3-h 질문입니다.

0

49

1

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

0

53

2

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

0

76

2