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

1. 문제 링크

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

 

1267번: 핸드폰 요금

동호가 저번 달에 이용한 통화의 개수 N이 주어진다. N은 20보다 작거나 같은 자연수이다. 둘째 줄에 통화 시간 N개가 주어진다. 통화 시간은 10,000보다 작거나 같은 자연수이다.

www.acmicpc.net

 

 

 

2. 문제 설명

N개의 통화 시간을 입력받아 문제의 조건에 따라 계산하여 최솟값을 구하는 문제입니다.

 

 

 

3. 소스코드

BOJ 1267번 핸드폰 요금 C++ 풀이입니다.

#include <iostream>
using namespace std;

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

	int N, temp, m = 0, y = 0;
	cin >> N;

	for (int i = 0; i < N; i++) {
		cin >> temp;
		y += (temp / 30 + 1) * 10;
		m += (temp / 60 + 1) * 15;
	}
	if (m < y) cout << "M " << m;
	else if (m > y) cout << "Y " << y;
	else if (m == y) cout << "Y M " << m;

	return 0;
}

30초 미만이거나 60초 미만이어도 요금이 나오므로 나눈 후 1을 더하고 요금을 곱하면 됩니다.

 

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

[백준 2438번 C++] 별 찍기 - 1  (0) 2020.04.30
[백준 10804번 C++] 카드 역배치  (0) 2020.04.30
[백준 2577번 C++] 숫자의 개수  (0) 2020.04.30
[백준 10093번 C++] 숫자  (0) 2020.04.29
[백준 2309번 C++] 일곱 난쟁이  (0) 2020.04.29

1. 문제 링크

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

 

2577번: 숫자의 개수

첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 같거나 크고, 1,000보다 작은 자연수이다.

www.acmicpc.net

 

 

 

2. 문제 설명

3개의 숫자를 입력받아 곱한 후, 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지 구하는 문제입니다.

 

 

 

3. 소스코드

BOJ 2577번 숫자의 개수 C++ 풀이입니다.

#include <iostream>
using namespace std;

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

	int A, B, C, mul;
	int arr[10] = {0, };
	cin >> A >> B >> C;
	mul = A * B * C;
	while (mul > 0) {
		arr[mul % 10]++;
		mul /= 10;
	}
	for (int i = 0; i < 10; i++)
		cout << arr[i] << '\n';

	return 0;
}

각각의 숫자가 몇 번씩 쓰였는지 구하기 위해 arr[10]을 선언하고 0으로 초기화했습니다.

arr[mul % 10]을 통해 mul의 일의 자리 숫자를 구해서 arr배열의 해당 인덱스에 +1을 해줍니다.

일의 자리 숫자를 구했으니 mul /= 10으로 mul의 값을 바꿔줍니다.

마지막으로 arr배열의 값을 차례로 출력해주면 됩니다.

 

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

[백준 10804번 C++] 카드 역배치  (0) 2020.04.30
[백준 1267번 C++] 핸드폰 요금  (0) 2020.04.30
[백준 10093번 C++] 숫자  (0) 2020.04.29
[백준 2309번 C++] 일곱 난쟁이  (0) 2020.04.29
[백준 2587번 C++] 대표값2  (0) 2020.04.29

1. 문제 링크

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

 

10093번: 숫자

문제 두 양의 정수가 주어졌을 때, 두 수 사이에 있는 정수를 모두 출력하는 프로그램을 작성하시오. 입력 두 정수 A와 B가 주어진다. (1 ≤ A, B ≤ 1015, A와 B의 차이는 최대 100,000) 출력 첫째 줄에 두 수 사이에 있는 수의 개수를 출력한다. 둘째 줄에는 두 수 사이에 있는 수를 오름차순으로 출력한다. 예제 입력 1 복사 8 14 예제 출력 1 복사 5 9 10 11 12 13...

www.acmicpc.net

 

 

 

2. 문제 설명

A와 B를 입력받은 후 A와 B의 사이에 있는 숫자의 개수와 숫자들을 출력하는 문제입니다.

 

 

 

3. 소스코드

BOJ 10093번 숫자 C++ 풀이입니다.

#include <iostream>
using namespace std;

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

	long long A, B;
	cin >> A >> B;

	if (A == B) cout << 0;
	else if (A < B) {
		cout << B - A - 1 << '\n';
		for (long long i = A + 1; i < B; i++) cout << i << ' ';
	}
	else if (A > B) {
		cout << A - B - 1 << '\n';
		for (long long i = B + 1; i < A; i++) cout << i << ' ';
	}

	return 0;
}

1 <= A, B <= 10^15 이므로 int의 범위를 초과합니다. 따라서 long long을 써야 합니다.

A < B가 아니라 A, B이므로 A = B인 경우와 A > B인 경우도 고려해야 합니다.

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

[백준 1267번 C++] 핸드폰 요금  (0) 2020.04.30
[백준 2577번 C++] 숫자의 개수  (0) 2020.04.30
[백준 2309번 C++] 일곱 난쟁이  (0) 2020.04.29
[백준 2587번 C++] 대표값2  (0) 2020.04.29
[백준 2576번 C++] 홀수  (0) 2020.04.29

+ Recent posts