2748, 1003, 1181

최명수·2021년 1월 19일
0

2748번

1.아이디어
n이주어졌을때 n번째 피보나치수를 출력하는 것이므로 배열하나를 만들어서 배열에다가 피보나치 수를 저장하는 방식을 생각함 .

#include <iostream>

using namespace std;

int main()
{
    long long n;
    long long a[96]={0, };
    cin>>n;
    a[0]=0;
    a[1]=1;    
    for(int i=2; i<=90; i++)
    {
        a[i]=a[i-1]+a[i-2];                

    }
    cout<<a[n];

}

3.깨달은점
하지만 n이 90보다 작거나 같은 자연수라는 조건을 생각하지 못하고 int형 배열을 사용했는데 90번째 피보나치수면 int 형의범위를 넘어가기때문에 longlong을 써줘야한다!

1003번

1.아이디어
처음에 문제에서 제공하는 함수를 쓰고 함수안에 static 변수를 이용해 0이나올때 acount++ 1이나올대 bcount++를 해주어서 출력을 하였으나 시간초과로 틀림. 그래서 Down-Top방식을 사용하기로함. Down-Top은 이전의값을 저장해서 다음문제를풀때 가져온다.

#include <iostream>

using namespace std;


int a[44][2];
int main()
{   
    a[0][0]=1;
    a[0][1]=0;
    a[1][0]=0;
    a[1][1]=1;
    for(int i=2; i<41; i++)
    {
        a[i][0]=a[i-2][0]+a[i-1][0];
        a[i][1]=a[i-2][1]+a[i-1][1];
    } 
    int i,t,n,f;
    cin>>t;      
    for(i=0; i<t; i++)
    {
        cin>>n;       
        
        cout<<a[n][0]<<' '<<a[n][1]<<'\n';
        
        
         
        
        
    }
    return 0;
}

3.깨달은점
문제를 통해 Dynamic Programming에 대해 처음 접근해 볼 수 있었고 그중에서도 Down Top 방식에 대해 알 수 있었다.

1181

1.아이디어
string형 vector를 만들어서 단어를 받고 sort를 이용해정렬

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

using namespace std;
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n;
    cin>>n;
    cin.ignore();
    vector<pair<int,string>>v(n);

    for(int i=0; i<n; i++)
    {
        cin>>v[i].second;
        v[i].first=v[i].second.size();

    }

    sort(v.begin(),v.end());
    cout<<v[0].second<<'\n';
    for(int i=1; i<n; i++)
    {
        if(v[i].second!=v[i-1].second)
        {
            cout<<v[i].second<<'\n'; 
        }
        
    }
    
}


3.깨달은점

처음에 문자열들을 사전순으로 정렬하는 것 까지는 되었으나 길이순으로 정렬하는게 생각이 도저히 나지 않았다. 그래서 구글링을 해보았는데 pair 벡터를 사용하면 두개의 자료형을 저장할수있으니깐 문자열을 저정하고 문자열길이까지 저장해서 소트 정렬을 하면 엄청간단하다는 걸 알게되었다. 앞으로 pair벡터를 좀더 많이 활용해봐야겠다..

0개의 댓글

관련 채용 정보