본문 바로가기
개발 노트/백준, 프로그래머스 풀이

백준 알고리즘 10988번 - 입출력, 입력범위, stirng 이해 부족으로 인한 런타임에러

by tokkiC 2022. 6. 13.
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL); 

 

1. 입출력 속도를 올려주는 위의 경우는 알고리즘 시간초과가 된다면 그 후에 추가하여 시도할 것. 굳이 미리 사용 말자
 

2. string 의 길이를 구할때는 length(), 벡터의 길이를 구할때는 size()를 써야 한다

3. 문제에서 입력범위가 주어지곤한다. 입력범위는 출제자가 내는 범위이니 내 코드에는 범위 내용을 적을 필요없다. 내 코드는 입력범위가 달라지더라도 항상 올바른 로직이어야 하기 때문이다. 물론 자료형의 판단에는 반영을 해야할것이다

 

4. string 은 정적할당 배열이 아닌 동적할당 배열이다. 즉, string 은 벡터이다. 그러므로 할당전에는 크기를 알 수 없으며, 인덱스또한 정해져있지 않다. push_back을 통하거나 다른 문자열을 대입해서 할당하여야만 한다

 

↓ 아래는 런타임에러가 난 내 오답 코드이다. 알고리즘 테스트 첫날의 코드이니 많이 부족하다
#include <bits/stdc++.h>


using namespace std;
string s;
string ori;
int chk =1;


int main() {
    ios_base::sync_with_stdio(false);  
    cin.tie(NULL);
    cout.tie(NULL);
    //큰돌님:왜 이런게 있죠?
    1<=s.size()<=100;
    cin >> s;
  //큰돌님:뭐죠?
    for(int i=0; i<s.size(); i++)               // 불필요한 코드
        ori[i] = s[i];                  // ori = s 로 해도 같은 의미이다   << 문자열은 동적 할당 배열이니 저렇게 받아서 할당해보았습니다
    reverse(s.begin(), s.end());        
   
    // 큰돌님:불필요한 코드가 아니라... 괜찮은 코드에요. ori == s로 한번에 해도 되지만
    // 큰돌님:for문도 된답니다.
    for(int i = 0; i<s.size(); i++)     //  불필요한 코드2
        if(s[i]!=ori[i])                //  if(ori == s) 로 판단해도 된다  
            chk = 0;        
           
    cout << chk << "\n";            
    return 0;
}

댓글