1. 문제 링크

 

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

 

2446번: 별 찍기 - 9

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

www.acmicpc.net

 

 

 

2. 문제 설명

N을 입력받은 후 모래시계 모양으로 출력하는 문제입니다.

 

 

 

3. 소스코드

BOJ 2446번 별 찍기 - 9 C++ 풀이입니다.

#include <iostream>
using namespace std;

int main(void)
{
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);

	int N;
	cin >> N;

	for (int i = 0; i < N; i++) {
		for (int j = 0; j < i; j++)
			cout << ' ';
		for (int j = 1; j <= (2 * (N - i)) - 1; j++)
			cout << '*';
		cout << '\n';
	}
	for (int i = 1; i < N; i++) {
		for (int j = 1; j < N - i; j++)
			cout << ' ';
		for (int j = 1; j <= (2 * i) + 1; j++)
			cout << '*';
		cout << '\n';
	}

	return 0;
}

이중 for문을 두 번 사용하여 역피라미드 모양으로 *을 출력한 후, 피라미드 모양으로 *을 출력하면 됩니다.

'Algorithm > Study' 카테고리의 다른 글

[백준 10807번 C++] 개수 세기  (0) 2020.05.12
[백준 10808번 C++] 알파벳 개수  (0) 2020.05.12
[백준 2445번 C++] 별 찍기 - 8  (0) 2020.04.30
[백준 2444번 C++] 별 찍기 - 7  (0) 2020.04.30
[백준 2443번 C++] 별 찍기 - 6  (0) 2020.04.30

1. 문제 링크

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

 

2445번: 별 찍기 - 8

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

www.acmicpc.net

 

 

 

2. 문제 설명

N을 입력받은 후 리본모양으로 *을 출력하는 문제입니다.

 

 

 

3. 소스코드

BOJ 2445번 별 찍기 - 8 C++ 풀이입니다.

#include <iostream>
using namespace std;

int main(void)
{
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);

	int N;
	cin >> N;

	for (int i = 1; i <= N; i++) {
		for (int j = 1; j <= i; j++)
			cout << '*';
		for (int j = 1; j <= (2 * N) - (2 * i); j++)
			cout << ' ';
		for (int j = 1; j <= i; j++)
			cout << '*';
		cout << '\n';
	}
	for (int i = 1; i < N; i++) {
		for (int j = 1; j <= N - i; j++)
			cout << '*';
		for (int j = 1; j <= 2 * i; j++)
			cout << ' ';
		for (int j = 1; j <= N - i; j++)
			cout << '*';
		cout << '\n';
	}

	return 0;
}

이중 for문을 두 번 사용하여 *, 공백, * 순서로 출력하면 됩니다.

'Algorithm > Study' 카테고리의 다른 글

[백준 10808번 C++] 알파벳 개수  (0) 2020.05.12
[백준 2446번 C++] 별 찍기 - 9  (0) 2020.04.30
[백준 2444번 C++] 별 찍기 - 7  (0) 2020.04.30
[백준 2443번 C++] 별 찍기 - 6  (0) 2020.04.30
[백준 2442번 C++] 별 찍기 - 5  (0) 2020.04.30

1. 문제 링크

 

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

 

2444번: 별 찍기 - 7

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

www.acmicpc.net

 

 

 

2. 문제 설명

N을 입력받은 후 다이아몬드 형태로 출력하는 문제입니다.

 

 

 

3. 소스코드

BOJ 2444번 별 찍기 - 7 C++ 풀이입니다.

#include <iostream>
using namespace std;

int main(void)
{
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);

	int N;
	cin >> N;

	for (int i = 1; i <= N; i++) {
		for (int j = 1; j <= N - i; j++)
			cout << ' ';
		for (int j = 1; j <= (2 * i) - 1; j++)
			cout << '*';
		cout << '\n';
	}
	for (int i = 1; i < N; i++) {
		for (int j = 1; j <= i; j++)
			cout << ' ';
		for (int j = 1; j <= (2 * (N - i)) - 1; j++)
			cout << '*';
		cout << '\n';
	}

	return 0;
}

이중 for문을 두 번 사용하여 피라미드 형태로 먼저 출력한 후, 역피라미드 형태로 출력하면 됩니다.

'Algorithm > Study' 카테고리의 다른 글

[백준 2446번 C++] 별 찍기 - 9  (0) 2020.04.30
[백준 2445번 C++] 별 찍기 - 8  (0) 2020.04.30
[백준 2443번 C++] 별 찍기 - 6  (0) 2020.04.30
[백준 2442번 C++] 별 찍기 - 5  (0) 2020.04.30
[백준 2441번 C++] 별 찍기 - 4  (0) 2020.04.30

1. 문제 링크

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

 

2443번: 별 찍기 - 6

첫째 줄에는 별 2×N-1개, 둘째 줄에는 별 2×N-3개, ..., N번째 줄에는 별 1개를 찍는 문제 별은 가운데를 기준으로 대칭이어야 한다.

www.acmicpc.net

 

 

 

2. 문제 설명

N을 입력받은 후 역피라미드 형태로 *을 출력하는 문제입니다.

 

 

 

3. 소스코드

BOJ 2443번 별 찍기 - 6 C++ 풀이입니다.

#include <iostream>
using namespace std;

int main(void)
{
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);

	int N;
	cin >> N;

	for (int i = 0; i < N; i++) {
		for (int j = 0; j < i; j++)
			cout << ' ';
		for (int j = 1; j <= (2 * (N - i)) - 1; j++)
			cout << '*';
		cout << '\n';
	}

	return 0;
}

이중 for문을 사용하여 공백을 먼저 출력한 후, (2 * (N - i)) - 1개의 *을 출력하면 됩니다.

 

'Algorithm > Study' 카테고리의 다른 글

[백준 2445번 C++] 별 찍기 - 8  (0) 2020.04.30
[백준 2444번 C++] 별 찍기 - 7  (0) 2020.04.30
[백준 2442번 C++] 별 찍기 - 5  (0) 2020.04.30
[백준 2441번 C++] 별 찍기 - 4  (0) 2020.04.30
[백준 2440번 C++] 별 찍기 - 3  (0) 2020.04.30

1. 문제 링크

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

 

2442번: 별 찍기 - 5

첫째 줄에는 별 1개, 둘째 줄에는 별 3개, ..., N번째 줄에는 별 2×N-1개를 찍는 문제 별은 가운데를 기준으로 대칭이어야 한다.

www.acmicpc.net

 

 

 

2. 문제 설명

N을 입력받은 후 피라미드 형태로 *을 출력하는 문제입니다.

 

 

 

3. 소스코드

BOJ 2442번 별 찍기 - 5 C++ 풀이입니다.

#include <iostream>
using namespace std;

int main(void)
{
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);

	int N;
	cin >> N;

	for (int i = 1; i <= N; i++) {
		for (int j = 1; j <= N - i; j++)
			cout << ' ';
		for (int j = 1; j <= (2 * i) - 1; j++)
			cout << '*';
		cout << '\n';
	}

	return 0;
}

이중 for문을 사용하여 공백을 먼저 출력한 후, (2 * i) - 1개의 *을 출력하면 됩니다.

'Algorithm > Study' 카테고리의 다른 글

[백준 2444번 C++] 별 찍기 - 7  (0) 2020.04.30
[백준 2443번 C++] 별 찍기 - 6  (0) 2020.04.30
[백준 2441번 C++] 별 찍기 - 4  (0) 2020.04.30
[백준 2440번 C++] 별 찍기 - 3  (0) 2020.04.30
[백준 2439번 C++] 별 찍기 - 2  (0) 2020.04.30

1. 문제 링크

 

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

 

2441번: 별 찍기 - 4

첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, ..., N번째 줄에는 별 1개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

www.acmicpc.net

 

 

 

2. 문제 설명

N을 입력받은 후 N부터 1개의 별을 오른쪽 정렬하여 각각의 줄에 출력하는 문제입니다.

 

 

 

3. 소스코드

BOJ 2441번 별 찍기 - 4 C++ 풀이입니다.

#include <iostream>
using namespace std;

int main(void)
{
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);

	int N;
	cin >> N;

	for (int i = 0; i < N; i++) {
		for (int j = 0; j < i; j++)
			cout << ' ';
		for (int j = N - i; j > 0; j--)
			cout << '*';
		cout << '\n';
	}

	return 0;
}

이중 for문을 사용하여 개수에 맞게 공백을 먼저 출력하고 이어서 *을 출력하면 됩니다.

 

'Algorithm > Study' 카테고리의 다른 글

[백준 2443번 C++] 별 찍기 - 6  (0) 2020.04.30
[백준 2442번 C++] 별 찍기 - 5  (0) 2020.04.30
[백준 2440번 C++] 별 찍기 - 3  (0) 2020.04.30
[백준 2439번 C++] 별 찍기 - 2  (0) 2020.04.30
[백준 2438번 C++] 별 찍기 - 1  (0) 2020.04.30

1. 문제 링크

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

 

2440번: 별 찍기 - 3

첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, ..., N번째 줄에는 별 1개를 찍는 문제

www.acmicpc.net

 

 

 

2. 문제 설명

N을 입력받은 후 N부터 1개의 별을 각각의 줄에 출력하는 문제입니다.

 

 

 

3. 소스코드

BOJ 2440번 별 찍기 - 3 C++ 풀이입니다.

#include <iostream>
using namespace std;

int main(void)
{
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);

	int N;
	cin >> N;

	for (int i = N; i > 0; i--) {
		for (int j = 1; j <= i; j++)
			cout << '*';
		cout << '\n';
	}

	return 0;
}

이중 for문을 사용하여 개수에 맞게 *을 출력하면 됩니다.

 

'Algorithm > Study' 카테고리의 다른 글

[백준 2442번 C++] 별 찍기 - 5  (0) 2020.04.30
[백준 2441번 C++] 별 찍기 - 4  (0) 2020.04.30
[백준 2439번 C++] 별 찍기 - 2  (0) 2020.04.30
[백준 2438번 C++] 별 찍기 - 1  (0) 2020.04.30
[백준 10804번 C++] 카드 역배치  (0) 2020.04.30

1. 문제 링크

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

 

2439번: 별 찍기 - 2

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

www.acmicpc.net

 

 

 

2. 문제 설명

N을 입력받은 후 1부터 N개의 별을 오른쪽 정렬하여 각각의 줄에 출력하는 문제입니다.

 

 

 

3. 소스코드

BOJ 2439번 별 찍기 - 2 C++ 풀이입니다.

#include <iostream>
using namespace std;

int main(void)
{
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);

	int N;
	cin >> N;

	for (int i = 1; i <= N; i++) {
		for (int j = N - i; j > 0; j--)
			cout << ' ';
		for (int j = 1; j <= i; j++)
			cout << '*';
		cout << '\n';
	}

	return 0;
}

이중 for문을 사용하여 개수에 맞게 공백을 먼저 출력하고 이어서 *을 출력하면 됩니다.

1. 문제 링크

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

 

2438번: 별 찍기 - 1

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제

www.acmicpc.net

 

 

 

2. 문제 설명

N을 입력받은 후 1부터 N개의 별을 각각의 줄에 출력하는 문제입니다.

 

 

 

3. 소스코드

BOJ 2438번 별 찍기 - 1 C++ 풀이입니다.

#include <iostream>
using namespace std;

int main(void)
{
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);

	int N;
	cin >> N;

	for (int i = 1; i <= N; i++) {
		for (int j = 1; j <= i; j++)
			cout << '*';
		cout << '\n';
	}

	return 0;
}

이중 for문을 사용하여 개수에 맞게 *을 출력하면 됩니다.

1. 문제 링크

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

 

10804번: 카드 역배치

1부터 20까지 오름차순으로 놓인 카드들에 대해, 입력으로 주어진 10개의 구간 순서대로 뒤집는 작업을 했을 때 마지막 카드들의 배치를 한 줄에 출력한다. 

www.acmicpc.net

 

 

 

2. 문제 설명

10개의 구간을 입력받아 구간만큼 배열을 뒤집어서 출력하는 문제입니다.

 

 

 

3. 소스코드

BOJ 10804번 카드 역배치 C++ 풀이입니다.

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

int main(void)
{
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);

	int begin, end;
	vector<int> v(21);
	for(int i = 0; i < 21; i++) v[i] = i;

	for(int i = 0; i < 10; i++) {
		cin >> begin >> end;
		reverse(v.begin() + begin, v.begin() + end + 1);
	}
	for(int i = 1; i < 21; i++)
		cout << v[i] << ' ';

	return 0;
}

카드의 번호가 1부터 시작하므로 vector크기를 21로 선언하고, 1~20번 인덱스를 사용했습니다.

reverse함수를 사용하여 입력받은 구간만큼 배열을 뒤집었습니다.

reverse함수의 사용법은 revers(시작 지점, 끝 지점) 입니다.

시작 지점을 포함하고, 끝 지점을 포함하지 않는 범위까지 요소들을 뒤집어줍니다.

예를 들어 5 10이 입력되면 5~10번 인덱스를 뒤집어야 합니다.

v.begin()은 0번 인덱스를 의미하므로 v.begin() + begin은 5번 인덱스를 의미합니다.

v.begin() + end + 1은 11번 인덱스를 의미하므로 10번 인덱스까지 뒤집어집니다.

 

 

 

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

int main(void)
{
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);

	int begin, end;
	vector<int> v(21);
	for(int i = 0; i < 21; i++) v[i] = i;

	for(int i = 0; i < 10; i++) {
		cin >> begin >> end;
		for (int j = 0; j < (end - begin) / 2 + 1; j++)
			swap(v[begin + j], v[end - j]);
	}
	for(int i = 1; i < 21; i++)
		cout << v[i] << ' ';

	return 0;
}

reverse함수 대신 swap함수를 사용해서 해당 범위를 뒤집는 방식으로 풀어도 됩니다.

'Algorithm > Study' 카테고리의 다른 글

[백준 2439번 C++] 별 찍기 - 2  (0) 2020.04.30
[백준 2438번 C++] 별 찍기 - 1  (0) 2020.04.30
[백준 1267번 C++] 핸드폰 요금  (0) 2020.04.30
[백준 2577번 C++] 숫자의 개수  (0) 2020.04.30
[백준 10093번 C++] 숫자  (0) 2020.04.29

+ Recent posts