개발/알고리즘

알고리즘 입출력_

송디 2020. 10. 11. 01:10

알고리즘 입출력

A+B(3)_10950

기초적인 입출력 문제이다. N 만큼의 두 수 입력을 받고 더한 값을 출력하면 된다.

#include<bits/stdc++.h>

using namespace std;

int main(void) {
    int a, b, n;

    cin >> n;
    while (n--) 
    {
        cin >> a >> b;
        cout << a + b << "\n";
    }
}

A+B(6)_10953

겉으로는 위 A+B(3)과 유사하다. 그러나 위에는 int로 받아도 상관없으나 아래는 문자열로 처리해줘야 한다. 문자에서 -'0'을 해주어 처리해주었다.

#include<bits/stdc++.h>

using namespace std;

int main(void) {
    int n;
    string str;

    cin >> n;
    while (n--) 
    {
        cin >> str;
        cout << str[0] - '0' + str[2] - '0' << "\n";
    }
}

A+B(7)_11021

출력에 대한 문제이다. 3번 문제를 토대로 출력문을 바꿔주면 된다. printf로 구현하는게 편하지만 cout 으로 구현하였다.

#include<bits/stdc++.h>

using namespace std;

int main(void) {
    int n, a, b;
    int t;

    cin >> n;
    t = n;
    while (n--)
    {
        cin >> a >> b;
        cout << "Case #" << t - n <<": " <<a+b << "\n";
        //printf("Case #%d: %d\n", t - n, a + b);
    }
}

A+B(8)_11022

출력에 대한 문제, 위 7번 문제와 거의 비슷하다.

 #include<bits/stdc++.h>

using namespace std;

int main(void) {
    int n, a, b;
    int t;

    cin >> n;
    t = n;
    while (n--)
    {
        cin >> a >> b;
        printf("Case #%d: %d + %d = %d\n", t - n, a, b, a + b);
    }
}

빠른 출력_15552

위 문제는 경우의 수가 많을 경우 cin, cout 을 쓰면 시간초과가 날 때가 있다.
이럴 때는

  • cin.tie(NULL);
  • ios::sync_with_stdio(false);
    을 사용하면 된다.
    ios_base(cin, cout)를 stdio(printf, scanf, putchar, getchar 등) 등과 동기화(같이 사용) 하지 않도록 함으로서 입출력 속도를 높인다.
#include<bits/stdc++.h>

using namespace std;  

int main(void) {  
cin.tie(NULL);  
ios::sync\_with\_stdio(false);

int n, a, b;
int t;

cin >> n;
t = n;
  while (n--)
  {
      cin >> a >> b;
      cout << a + b << '\n';
  }
}

그대로 출력하기_11718

문자열이 입력되면 그대로 출력하는 것이다. 이 문제는 20%대 정답률을 보이고 있는데, 입출력 문제인데 이 정도 정답률을 보이는 것은 종료 지점을 찾지 못해서이다. 나도 이 문제를 혼란을 겪고 있다. 첫칸과 마지막 칸에 빈 칸이 오지 못한다는 것을 봐서 마지막 줄 마지막 칸에 빈 칸이 오면 정답이 되는 것을 확인해보려고 한다.

#include<bits/stdc++.h>

using namespace std;

int main(void)
{
char s[10001];
char input;
int i = 0;
int flag;

flag = 0;
while (1) 
{
    scanf("%1c", &input);
    s[i] = input;
    if (input == '\n' && flag == 1)
        break;
    else if (input == ' ' && flag == 0)
        flag = 1;
    else flag = 0;
    i++;
}

}

최소, 최대_10818

 

N만큼 입력 받아 최소, 최대 값을 출력하는 것이다. C언어라면 하나하나 다 해줘야 겠지만, C++에서는 *max_element, *min_element를 이용하면 된다.

#include<bits/stdc++.h>

using namespace std;
int main(void)
{
int n;
int number;
int min_num;
int max_num;
vector num_arr;

cin >> n;
while (n--) {
cin >> number;
num_arr.push_back(number);
}
min_num = *min_element(num_arr.begin(), num_arr.end());
max_num = *max_element(num_arr.begin(), num_arr.end());

cout << min_num << " " << max_num << "\n";

}
728x90

'개발 > 알고리즘' 카테고리의 다른 글

2133_Tri Tiling(DP)  (0) 2020.10.31
11726번: 2×n 타일링  (0) 2020.10.25
백준_입출력(1)  (0) 2020.10.06
알고리즘_부산코딩대회후기  (0) 2019.11.16
알고리즘_부산코딩대회준비_03.동적계획법(DP)  (0) 2019.11.14