반응형
https://www.acmicpc.net/problem/8815
단순 구현 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
테스트 케이스 수 z, 답변의 수 n을 선언하고 입력받습니다. 대답할 정답 문자들을 일차원 배열 answers로 선언해 저장해줍니다.
📔 풀이과정
n이 10억이기 때문에 단순 simulation으로는 시간초과를 받기 때문에 적절한 공식을 찾아야 합니다.
'A'에서 시작해서 다음 문자 -> 다음 문자 -> 이전 문자로 대답을 하는 패턴이므로 3의 배수를 단위로 다음 문자로 대답을 한다는 것을 알 수 있습니다.
다음 문자로 이동하는 횟수 = (n-1) / 3를 지역변수 moved를 선언해 저장해줍니다.
남은 이동 횟수 = (n-1) % 3 입니다. 이를 지역변수 movedLeft를 선언해 저장해줍니다.
다음 문자로 이동하는 총 이동 횟수 = moved + movedLeft이므로 이를 4로 나눈 나머지 값이 최종 답이 됩니다.
📔 정답출력
answers[(moved + movedLeft) % 4]를 출력해줍니다.
📕 Code
#include <bits/stdc++.h>
using namespace std;
int z, n;
char answers[4] = {'A', 'B', 'C', 'D'};
int main(){
cin >> z;
while(z--){
cin >> n;
int moved = (n-1) / 3;
int movedLeft = (n-1) % 3;
cout << answers[(moved + movedLeft) % 4] << '\n';
}
}
'Algorithm > Implementation' 카테고리의 다른 글
(C++) - 백준(BOJ) 8713 : Znak działania (0) | 2022.02.21 |
---|---|
(C++) - 백준(BOJ) 9298 : Ant Entrapment (0) | 2022.02.19 |
(C++) - 백준(BOJ) 8574 : Ratownik (0) | 2022.02.17 |
(C++) - 백준(BOJ) 8725 : Szachy (0) | 2022.02.16 |
(C++) - 백준(BOJ) 9286 : Gradabase (0) | 2022.02.15 |