LIS 문제 푸는 도중 입력 관련 질문 있습니다!

  • furyhunter
    furyhunter

    LIS

    LIS 문제 푸는 도중에 자꾸 오답이 떠서 질문드립니다.

    제 생각에 숫자 입력받는 부분에서 문제가 나는것같습니다.

    숫자 입력이 "4 5 6 7" 로 들어오는데..

    아래 코드에서 처럼

    for(j = 0; j < size; j++)
    scanf("%d ", &sn[j]);

    로 받아도 문제가 없는지 궁금합니다.

    #include <stdio.h>
    
    int main(void)
    {
        int T = 0;
        int size = 0;
        int sn[500];
        int count = 0;
        int temp = 0;
        int i, j;
    
        scanf("%d \n", &T);
    
        for(i = 0; i < T; i++)
        {
            scanf("%d \n", &size);    
    
            for(j = 0; j < size; j++)
                scanf("%d ", &sn[j]);
    
            for(j = 0; j < size-1; j++)
            {
                if(sn[j] < sn[j+1])
                    count ++;
                else if(count >= temp)
                {
                    temp = count;
                    count = 0;
                }
                else
                    count = 0;
            }
    
            if(temp > count)
                count = temp;
    
            if(count != 0)
                count ++;
    
            printf("%d \n", count);
    
            count = 0;
            temp = 0;
        }
    
        return 0;
    }
    

    10년 전
4개의 댓글이 있습니다.
  • Taeyoon_Lee
    Taeyoon_Lee

    입력에서 특별히 문제가 보이진 않습니다. 다만, scanf 안에는 스페이스나 개행문자를 쓰지 않아도 됩니다. 그게 일반적이고요. 그러니까
    scanf("%d \n", &size); 는 scanf("%d", &size); 가 일반적이고
    scanf("%d ", &sn[j]); 는 scanf("%d", &sn[j]); 가 일반적입니다.


    10년 전 link
  • furyhunter
    furyhunter

    그럼 "4 5 6 7" 하는 식의 입력도 그냥 %d를 반복하면 입력이 되는건가요?

    지금 사정상 테스트롤 못하는 환경이라 직접 해볼수가 없네요..


    10년 전 link
  • Taeyoon_Lee
    Taeyoon_Lee

    네. 화이트스페이스(스페이스나 탭이나 엔터)를 기준으로 문자열이나 숫자를 잘라주는 게 scanf의 역할입니다.


    10년 전 link
  • furyhunter
    furyhunter

    그렇군요! 감사합니다~


    10년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.