no image
[C++] 백준 - 1264번 문제 (모음의 개수)
문제설명 소스코드 #include #include using namespace std; int main() { string input; while (true) { int count = 0; getline(cin, input); for (int i = 0; i < input.length(); ++i) { if (input[i] == 'a' || input[i] == 'e' || input[i] == 'i' || input[i] == 'o' || input[i] == 'u' || input[i] == 'A' || input[i] == 'E' || input[i] == 'I' || input[i] == 'O' || input[i] == 'U') ++count; else if (input[i] == '#') r..
2023.04.08
no image
[C++] 백준 - 25372번 문제 (성택이의 은밀한 비밀번호)
문제설명 소스코드 #include using namespace std; int main() { int input; string pw; cin >> input; for (int i = 0; i > pw; if (pw.length() >= 6 && pw.length()
2023.04.07
no image
[C++] 백준 5단계 - 2444번 문제(별 찍기 -7)
문제설명 소스코드 #include using namespace std; int main() { int input; cin >> input; for (int i = 1; i
2023.04.07
no image
[C++] 백준 - 27433번 문제 (팩토리얼 2)(재귀 사용X)
문제설명 소스코드 #include using namespace std; int main() { int input; cin >> input; if (input == 0) { cout
2023.04.06
no image
[C++] 백준 5단계 - 5622번 문제
문제설명 소스코드 #include using namespace std; int main() { string input; int sum = 0; cin >> input; for (int i = 0; i < input.length(); ++i) { if (input[i] == 'A' || input[i] == 'B' || input[i] == 'C') sum += 3; else if (input[i] == 'D' || input[i] == 'E' || input[i] == 'F') sum += 4; else if (input[i] == 'G' || input[i] == 'H' || input[i] == 'I') sum += 5; else if (input[i] == 'J' || input[i] == 'K' ..
2023.04.05
no image
[C++] 백준 5단계 - 2908번 문제
문제설명 소스코드 #include #include using namespace std; int main() { string a; string b; cin >> a >> b; for (int i = 0; i d ? cout
2023.04.05
no image
[C++] 백준 5단계 - 1152번 문제
문제설명 소스코드 #include #include using namespace std; int main() { string input; int count = 0; getline(cin, input); if (input.empty() || ((input[0] == ' ') && input.length() == 1)) { //문자열이 없거나 있어도 공백을 포함한 1글자라면 0을 출력한다. cout
2023.04.05
no image
[C++] 백준 5단계 - 2675번 문제
문제설명 소스코드 #include using namespace std; int main() { int T; int N; string input; cin >> T; for (int i = 0; i > N >> input; for (int j = 0; j < input.length(); ++j) { for (int k = 0; k < N; ++k) cout
2023.04.03

문제설명

 

소스코드

#include<iostream>
#include<string>
using namespace std;
int main() {
	string input;
	while (true)
	{
		int count = 0;
		getline(cin, input);
		for (int i = 0; i < input.length(); ++i)
		{
			if (input[i] == 'a' || input[i] == 'e' || input[i] == 'i' || input[i] == 'o' || input[i] == 'u' ||
				input[i] == 'A' || input[i] == 'E' || input[i] == 'I' || input[i] == 'O' || input[i] == 'U') ++count;
			else if (input[i] == '#') return 0;
		}
		cout << count << endl;
	}
}

공백을 포함한 한 줄을 입력받을 때는 cin이 아니라 getline()을 통해 입력을 받는다.

문제설명

 

소스코드

#include<iostream>
using namespace std;
int main() {
	int input; string pw;
	cin >> input;
	for (int i = 0; i < input; ++i)
	{
		cin >> pw;
		if (pw.length() >= 6 && pw.length() <= 9) cout << "yes" << endl;
		else cout << "no"<< endl;
	}
}

문제설명

 

소스코드

#include<iostream>
using namespace std;
int main() {
	int input;
	cin >> input;
	for (int i = 1; i <= input; ++i) {
		for (int j = 0; j < input - i; ++j) cout << " ";
		for (int k = 0; k < 2 * i - 1; ++k) cout << "*";
		cout << endl;
	}
	for (int i = 1; i < input; ++i) 
	{
		for (int j = 0; j < i; ++j) cout << " ";
		for (int k = 0; k < 2 * input - (2 * i + 1); ++k) cout << "*";
		cout << endl;
	}
}

문제설명

 

소스코드

#include<iostream>
using namespace std;
int main() {
    int input;
    cin >> input;
    if (input == 0) { cout << 1; return 0; }
    long long tmp = 1;
    for (int i = 1; i <= input; ++i) tmp *= i;
    cout<< tmp;
}

주의해야 할 점은 20! 은 int형 변수의 허용범위를 넘기 때문에 long long으로 해야 한다.

문제설명

 

소스코드

#include<iostream>
using namespace std;
int main()
{
	string input; int sum = 0;
	cin >> input;
	for (int i = 0; i < input.length(); ++i)
	{
		if (input[i] == 'A' || input[i] == 'B' || input[i] == 'C') sum += 3;
		else if (input[i] == 'D' || input[i] == 'E' || input[i] == 'F') sum += 4;
		else if (input[i] == 'G' || input[i] == 'H' || input[i] == 'I') sum += 5;
		else if (input[i] == 'J' || input[i] == 'K' || input[i] == 'L') sum += 6;
		else if (input[i] == 'M' || input[i] == 'N' || input[i] == 'O') sum += 7;
		else if (input[i] == 'P' || input[i] == 'Q' || input[i] == 'R' || input[i] == 'S') sum += 8;
		else if (input[i] == 'T' || input[i] == 'U' || input[i] == 'V') sum += 9;
		else if (input[i] == 'W' || input[i] == 'X' || input[i] == 'Y' || input[i] == 'Z') sum += 10;
	}
	cout << sum;
}

또는

#include<iostream>
using namespace std;
int main() {
	string input;
	cin >> input;
	int arr[] = { 3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,8,9,9,9,10,10,10,10 };
	int sum = 0;
	for (int i = 0; i < input.length(); ++i) sum += arr[input[i] - 'A'];
	cout << sum;
}

 

풀이

첫 번째 코드 설명

  • for문으로 문자열의 길이만큼 루프를 돈다.
  • if문으로 각 문자에 맞게 sum에 더한다.

두 번째 코드 설명

  • 배열에는 알파벳의 개수 만큼 숫자가 들어가 있고, 각 원소는 A~Z에 대응하는 숫자이다.
  • 이 또한 문자열의 길이만큼 루프를 도는데, sum에는 각 문자열에 'A'(65)를 뺀 arr배열의 인덱스값을 더한다. 예를 들어 'B'는 아스키코드상으로 66이므로 'A'를 빼면 1이다 즉 arr[1]인 3을 sum에 더한다.

문제설명

 

소스코드

#include<iostream>
#include <string>
using namespace std;
int main()
{
	string a; string b;
	cin >> a >> b;
	for (int i = 0; i < 1; ++i)
	{
		string tmp = "   ";
		tmp[i] = a[2 - i];
		a[2 - i] = a[i];
		a[i] = tmp[i];
		tmp[i] = b[2 - i];
		b[2 - i] = b[i];
		b[i] = tmp[i];
	}
	int c = stoi(a); int d = stoi(b);
	c > d ? cout << c : cout << d;
}

문제설명

 

소스코드

#include<iostream>
#include <string>
using namespace std;
int main()
{
	string input; int count = 0;
	getline(cin, input);
	if (input.empty() || ((input[0] == ' ') && input.length() == 1)) 
	{
    	//문자열이 없거나 있어도 공백을 포함한 1글자라면 0을 출력한다.
		cout << 0;
		return 0;
	}
	int npos;
	npos = input.find_first_not_of(' ');
	input.erase(0, npos); //왼쪽 공백 제거
	npos = input.find_last_not_of(' ');
	input.erase(npos + 1); //오른쪽 공백 제거
	for (int i = 0; i < input.length(); ++i)
	{
		if (input[i] == ' ') ++count; //공백 카운트한다.
	}
	cout << ++count; //공백 +1이 단어의 개수이다.
}

 

풀이

  1. cin으로 문자열을 받지않고 getline()으로 받는다.
  2. 양쪽 공백 제거
  3. 문자 사이의 공백 수 +1이 단어의 개수이다.
  4. 문자열이 없거나 있어도 공백을 포함한 1글자라면 0을 출력한다.

왜 cin으로 받으면 안되는 것이고, getline()으로 받아야하는지 모르겠다. 나중에 알아봐야겠다.

문제설명

 

소스코드

#include <iostream>
using namespace std;
int main()
{
    int T; int N; string input;
    cin >> T;
    for (int i = 0; i < T; ++i)
    {
        cin >> N >> input;
        for (int j = 0; j < input.length(); ++j)
        {
            for (int k = 0; k < N; ++k) cout << input[j];
        }
        cout << endl;
    }
}

for문을 무조건 3개를 중첩하는 방법밖에 없는 것 같다..

3개 미만으로 하는 방법이 도저히 생각나지 않는다.