👀 문제
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWjlH0k63joDFAVT
👊 도전
1. 설계
- 어떤 자리를 선택하던 실행 횟수는 같으므로 각 자리수를 스택에 넣은 후 계산한다.
- 실행 횟수가 홀수라면 A가, 짝수라면 B가 이긴다.
2. 구현
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
32
33
34
35
36
37
import java.util.*;
/**
*
* @author HEESOO
*
*/
class Main {
static int[] maxRoom;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T;
T=sc.nextInt();
for(int test_case = 1; test_case <= T; test_case++)
{
String[] num=sc.next().split("");
Stack<String> st=new Stack<>();
for(String n:num) st.push(n);
int cnt=0;
while(st.size()>1) {
int sum=Integer.parseInt(st.pop())+Integer.parseInt(st.pop());
String[] str=String.valueOf(sum).split("");
for(String s:str) st.push(s);
cnt++;
}
String answer="";
if(cnt%2==0) answer="B";
else answer="A";
System.out.println("#"+test_case+" "+answer);
}
}
}
3. 결과
🤟 성공 🤟
4. 설명
- 숫자의 덧셈 규칙 실행 횟수를 구한다
- 어느 자리를 선택하여 더하던 실행 횟수는 같다.
- 따라서 스택에 각 자리수를 넣은 후 두 개씩 뽑아서 계산하고 cnt로 카운트한다.
- 더한 sum이 10 이상이면 각 자리수의 숫자를 스택에 넣어야 하는 것을 염두한다.
- 승리자를 찾는다
- cnt가 짝수라면 B가 이긴 것이고, 홀수라면 A가 이긴 것과 같다.