오늘 문제는 어찌보면 정말 간단한 문제!
ascode 시분할 문제를 풀어볼 것이다!
http://www.ascode.org/problem.php?id=1004
www.ascode.org
문제 분석
조건 분석
1. 문제 해결을 반복할 testCase와 출력을 반복할 시간(T)이 입력된다.
2. A의 주기, B의 주기 C의 주기의 값이 들어온다. (0 < A, B, C < 1000)
문제 해결
1. 각 값을 입력 받는다.
2. 자신의 주기가 될 때마다 출력을 한다.
※ 걱정 안 해도 될 요소 ※
1. 만약에 A의 주기가 1이고, B의 주기가 2인데 그럼 2번째 타임에는 A 출력 한다!
AAB 와 같이 알파벳 순으로 그냥 출력해주자!
코드 작성
1. 입력 및 변수설정
int main() {
int testCase;
scanf("%d", &testCase);
while (testCase--) {
int turn, aCycle, bCycle, cCycle;
scanf("%d %d %d %d", &turn, &aCycle, &bCycle, &cCycle);
}
}
작동시간(T), A의 주기(aCycle), B의 주기(bCycle), C의 주기(aCycle)를 각각 선언하고 입력을 받았다.
2. 사이클 알고리즘
for (int i = 1; i <= turn; i++) {
if (!(i % aCycle)) printf("A");
if (!(i % bCycle)) printf("B");
if (!(i % cCycle)) printf("C");
}
printf("\n");
시작값을 1로 둔 이유는 사이클 계산을 편하게 하기 위함이다.
자신의 주기로 나누어 떨어지게 되면 출력을 하게된다.
자신의 주기로 나누어 떨어짐 |
→ |
if( !0 ) 같은 의미를 가짐 |
→ |
0의 not 연산을 통해 참이 됨 |
전체코드
#include <stdio.h>
int main() {
int testCase;
scanf("%d", &testCase);
while (testCase--) {
int turn, aCycle, bCycle, cCycle;
scanf("%d %d %d %d", &turn, &aCycle, &bCycle, &cCycle);
for (int i = 1; i <= turn; i++) {
if (!(i % aCycle)) printf("A");
if (!(i % bCycle)) printf("B");
if (!(i % cCycle)) printf("C");
}
printf("\n");
}
}
'ascode 문제풀이' 카테고리의 다른 글
[ascode 문제풀이] 1006: 문자열중 문자의 갯수 구하기 (0) | 2020.04.08 |
---|---|
[ascode 문제풀이] 1003: 차차 퀘스트 I (0) | 2020.03.25 |
[ascode 문제풀이] 1001: 나는 차차를 싫어해! (0) | 2020.03.03 |