티스토리 뷰

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비 - 인프런 | 강의

모든 문제에 대한 저작권은 위 강의에 있습니다.

문제

A, B 두 사람이 가위바위보 게임을 합니다. 총 N번의 게임을 하여 A가 이기면 A를 출력하고, B가 이기면 B를 출력합니다. 비길 경우에는 D를 출력합니다. 가위, 바위, 보의 정보는 1:가위, 2:바위, 3:보로 정하겠습니다. 예를 들어 N=5이면

회수 1 2 3 4 5
A의 정보 2 3 3 1 3
B의 정보 1 1 2 2 3
승자 A B A B D

두 사람의 각 회의 가위, 바위, 보 정보가 주어지면 각 회를 누가 이겼는지 출력하는 프로그램을 작성하세요.

입력 설명

첫 번째 줄에 게임 횟수인 자연수 N(1<=N<=100)이 주어집니다. 두 번째 줄에는 A가 낸 가위, 바위, 보 정보가 N개 주어집니다. 세 번째 줄에는 B가 낸 가위, 바위, 보 정보가 N개 주어집니다.

출력 설명

각 줄에 각 회의 승자를 출력합니다. 비겼을 경우는 D를 출력합니다.

입력 예제 1

5
2 3 3 1 3
1 1 2 2 3

출처 : 한국정보올림피아드

출력 예제 1

A
B
A
B
D

제출 코드

2023년 2월 7일

#include <iostream>
#include <vector>

using namespace std;

char RSP(int A, int B)
{
		if (A == 1)
		{
				if (B == 1)
						return 'D';
				else if (B == 2)
						return 'B';
				else
						return 'A';
		}
		else if (A == 2)
		{
				if (B == 1)
						return 'A';
				else if (B == 2)
						return 'D';
				else
						return 'B';
		}
		else
		{
				if (B == 1)
						return 'B';
				else if (B == 2)
						return 'A';
				else
						return 'D';
		}
}

int main()
{
		int N = 0;
		cin >> N;
	
		vector<int> A;
		vector<int> B;
	
		for (int i = 0; i < N; i++)
		{
				int temp = 0;
				cin >> temp;
				A.push_back(temp);
		}
	
		for (int i = 0; i < N; i++)
		{
				int temp = 0;
				cin >> temp;
				B.push_back(temp);
		}
	
		for (int i = 0; i < N; i++)
		{
				cout << RSP(A[i], B[i]) << '\\n';
		}
	
		return 0;
}

풀이

훨씬 간단하게 분기문으로 결과를 만드는 방법이 있었다.

<aside> 👉 1. 비기는 경우 (= 분기분 1번)

  1. A가 이기는 경우 (= 분기분 3번)
    • A 주먹 VS B 가위
    • A 가위 VS B 보
    • A 보 VS B 주먹
  2. else 그 외 : B가 이기는 경우 (= else)

</aside>

이렇게 하면 분기문이 총 5개로 끝난다.

'😈 알고리즘 > 🍃 인프런 #1' 카테고리의 다른 글

🙏 22. 온도의 최대값  (0) 2023.03.12
🙏 21. 카드게임  (0) 2023.03.11
🙏 19. 분노 유발자  (0) 2023.03.09
🙏 18. 층간소음  (0) 2023.03.08
🙏 17. 선생님 퀴즈  (0) 2023.03.07
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
링크
Total
Today
Yesterday