프로그래밍 언어/C++

[코드트리 조별과제] 2024-08-05 2문제 풀이

식혜드식혜 2024. 8. 11. 15:11

<1. 두 숫자의 차의 최솟값>

🔗https://www.codetree.ai/missions/4/problems/minimum-difference-between-two-numbers/description

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

수 n개를 순서대로 입력하고, 입력받은 두 숫자를 골랐을 때 차이의 최솟값을 출력하는 문제이다.

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n;
    cin >> n;
    vector<int> vec(n);
    for (int i = 0; i < n; i++) {
        cin >> vec[i];
    }
    
    int min = vec.back();
    int tmp = 0;
    for (int i = 1; i < n; i++)
    {
        tmp = vec[i] - vec[i - 1];

        if (tmp < min) {
            min = tmp;
        }
    }

    cout << min;
    return 0;
}

 

<코드설명>

vector에 int형 n만큼의 공간을 할당해주고, for문을 이용해 입력받은 순서대로 할당해주었다.

그리고 벡터를 돌면서 tmp에 벡터값끼리의 차이를 구해 min보다 작으면 할당해주었다.

-> 가장 최솟값이 min에 담기게 되며 이것을 출력해주었다.

 

2. 별표 출력하기

🔗https://www.codetree.ai/missions/4/problems/print-star-4/description

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

 

정수 n의 값을 입력받아 대칭인 별표를 출력하는 문제이다.

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n; //3
    for(int i=n; i>0; i--) //길이가 n인 역직각삼각형을 출력
    {
        for(int j=0;j<i; j++)
        {
            cout << "* ";
        }
        cout << endl;
    }    
    
    for(int i=2; i<=n; i++) //길이가 n-1인 직각삼각형을 출력
    {
        for(int j=0;j<i; j++) 
        {
            cout << "* ";
        }
        cout << endl;
    }    
    return 0;
}

 

위에 있는 역직각삼각형과 아래에 있는 직각삼각형을 나누어 출력하였다.

역직각삼각형은 길이가 n이고, *가 1씩 줄어들기 때문에 바깥쪽 for문을 이렇게 작성하였다.

마찬가지로, 직각삼각형은 길이가 n-1이고, *가 2부터 n까지 1줄마다 1씩 증가하기 때문에 바깥쪽 for문 범위를 2~n으로 지정하였다.