입출력 문제

CJB_ny·2022년 12월 14일
0

백준

목록 보기
3/104

입출력 문제 풀기 전에

https://www.acmicpc.net/problem/15552

꼭 읽자.

번호문제 유형난이도링크
2557Hello world찍기😆
1000
2558
10950
10951
10952
10953
11021
11022
11718
11719
11720
11721
2741
2742
2739
1924
8393
10818
2438
2439
2440
2441
2442
2445
2522
2446

백준 11720

https://www.acmicpc.net/problem/11720

int main()
{
	int num;
	int sum = 0;
	char ch;

	cin >> num;

	for (int i = 0; i < num; ++i)
	{
		cin >> ch;
		sum += ch - 48;
	}

	cout << sum << endl;


	return 0;
}

저거 cin >> ch아마도 ro 영역에 다 올린다음에

하나씩 읽어와서 sum에다가 더해주는거 같다.

11721

이거 100개 제한? 이런말이 햇갈려셔 뻘짓 많이함.

https://www.acmicpc.net/problem/11721

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

int main()
{
	string str;
	cin >> str;

	for (int i = 0; i < str.size(); ++i)
	{
		cout << str[i];
		if (i % 10 == 9) cout << endl;
	}

	return 0;
}
// 틀린거
#include <iostream>
#include <string>
using namespace std;

int main()
{
	char str[100];
	
	cin >> str;

	for (int i = 0; i < 100; ++i)
	{
		cout << str[i];
		if (str[i] == '\0') break;
		if (i == 9) cout << endl;
	}

	return 0;
}

11718

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

int main()
{
	string str;

	while (true)
	{
		getline(cin, str);
		if (str == "") break;
		cout << str << endl;
	}


	return 0;
}

이문제는 getline같은 함수 사용한 방법? 익히는 그런문제인듯

후기 남길것은 없음.

2750

https://www.acmicpc.net/problem/2750

QuickSort사용함

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

std::vector<int> nums;
int inputN;

int Partition(vector<int>& vec, int left, int right)
{
    int pivotData = vec[left];
    int pLeft = left + 1;
    int pRight = right;

    while (pLeft <= pRight)
    {
        while (pLeft <= right && vec[pLeft] <= pivotData)
            ++pLeft;

        while (pRight >= left + 1 && vec[pRight] >= pivotData)
            --pRight;

        if (pLeft < pRight)
            std::swap(vec[pLeft], vec[pRight]);
    }

    std::swap(vec[left], vec[pRight]);
    return pRight;
}

void QSort(vector<int>& vec, int left, int right)
{
    if (left > right)
        return;

    int pivot = Partition(vec, left, right);
    QSort(vec, left, pivot - 1);
    QSort(vec, pivot + 1, right);
}


int main()
{
    cin >> inputN;
    for (int i = 0; i < inputN; ++i)
    {
        int num;
        cin >> num;
        nums.push_back(num);
    }

    QSort(nums, 0, nums.size()- 1);

    for (int i = 0; i < nums.size(); ++i)
        cout << nums[i] << endl;
    
	return 0;
}

별찍기 문제들

2438 별 찍기 - 1 성공 123061 238029 62.556%
2439 별 찍기 - 2 성공 112028 235277 56.273%
2440 별 찍기 - 3 성공 47004 77381 68.228%
2441 별 찍기 - 4 성공 43542 65901 74.144%
2442 별 찍기 - 5 성공 26146 53290 55.567%
2445 별 찍기 - 8 성공 18988 28961 73.251%
2446 별 찍기 - 9 성공 23886 45171 58.998%
2522

이거 그냥 처음에는 좀 짧게 짤려고했는데..

특히 2446번 같은거

사람들 다 for문을 나누어서 품.

그래서 나도 그냥

#include <iostream>
using namespace std;


int main()
{
	int n;
	cin >> n;

	int loop = 0;
	for (int i = 0; i < n; ++i)
	{
		for (int j = 0; j < i; ++j)
			cout << " ";

		for (int k = 0; k < (n * 2) - loop - 1; ++k)
			cout << "*";

		cout << '\n';
		loop += 2;
	}
	
	loop = 0;

	for (int i = 0; i < n - 1; ++i)
	{
		for (int j = 0; j < n - 2 - i; ++j)
			cout << " ";

		for (int k = 0; k < loop + 3; ++k)
			cout << "*";

		cout << '\n';
		loop += 2;
	}

	return 0;
}

이런식으로 for문 두개로 품.

profile
https://cjbworld.tistory.com/ <- 이사중

0개의 댓글