백준 10872번: 팩토리얼

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

 

처음에는 어라 이거 그냥 for문 때리면 되는 거 아닌가 하고

#include <iostream>
using namespace std;

int main()
{
	int N;
	int n = 1;
	cin >> N;

	if (N != 0)
	{
		for (int i = 1; i <= N; i++) { n *= i; }
	}

	cout << n;
}

이렇게 풀었었는데

가만히 생각해보니 이 문제는 재귀함수 카테고리에 들어 있어서 이렇게 풀면 안 될 것 같았다

#include <iostream>
using namespace std;

int fac(int n)
{
	if (n == 0) { return 1; }
	return n * fac(n - 1);
}

int main()
{
	int N;
	cin >> N;
	cout << fac(N);
}

재귀함수 사용해서 다시 클리어

 

백준 2675번: 문자열 반복

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

 

#include <iostream>
using namespace std;

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

	for (int i = 0; i < T; i++)
	{
		int R;
		string S;
		cin >> R >> S;

		for (int j = 0; j < S.length(); j++)
		{
			for (int k = 0; k < R; k++)
			{
				cout << S[j];
			}
		}
		cout << endl;
	}
}

 

생각했던 대로 풀린 문제

'백준' 카테고리의 다른 글

[백준] 7568번: 덩치 (C++)  (0) 2022.03.19
[백준] 10870번: 피보나치 수 5 (C++)  (0) 2022.02.22
[백준] 10872번: 팩토리얼 (C++)  (0) 2022.02.22
[백준] 10809번: 알파벳 찾기 (C++)  (0) 2022.01.10
[백준] 10951번: A+B - 4 (C++)  (0) 2021.12.30

백준 10809 번 : 알파벳 찾기

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

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

int main()
{
	string s;
	int where[26];

	cin >> s;
	for (int i = 0; i < 26; i++)
	{
		where[i] = -1;
	}

	for (int j = 97; j < 123; j++) //a부터~
	{
		for (int i = 0; i < s.length(); i++) //s의 i번째 글자에서~
		{
			if (s[i] == j)
			{
				where[j - 'a'] = i;
				break;
			}
		}
	}

	for (int i = 0; i < 26; i++)
	{
		cout << where[i] << " ";
	}

	return 0;
}

처음에는 break를 안 넣어서 틀리고,

다음에는 i와 j를 반대 순서로 실행해서 같은 문자가 여러 번 나올 때 문제가 생겼다.

string 헤더를 include 해놓고 제대로 쓰지 않았는데, string 헤더를 사용하면 훨씬 짧게 끝낼 수 있었을 것 같다. 나중에 다시 해봐야겠다.

'백준' 카테고리의 다른 글

[백준] 7568번: 덩치 (C++)  (0) 2022.03.19
[백준] 10870번: 피보나치 수 5 (C++)  (0) 2022.02.22
[백준] 10872번: 팩토리얼 (C++)  (0) 2022.02.22
[백준] 2675번: 문자열 반복 (C++)  (0) 2022.01.14
[백준] 10951번: A+B - 4 (C++)  (0) 2021.12.30

백준 10951번: A+B-4

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

 

10951번: A+B - 4

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

 

문자 입력 함수는 파일의 끝을 만났을 때(더 이상 읽을 수 있는 데이터가 없는 경우) 정해진 EOF(End of File) 값을 리턴한다.

문제에서 테스트 케이스의 개수가 주어지지 않으므로 입력이 더 이상 주어지지 않을 때 반목문을 종료할 수 있어야 한다.

 

#include <iostream>
using namespace std;

int main()
{
	int A, B;

	while (cin >> A >> B)
	{
		cout << A + B << endl;
	}
}

+ Recent posts