백준 9557 : Arabic and English
문제 링크
https://www.acmicpc.net/problem/9557
문제 내용
(요약) 한 줄에 아랍어 '#'으로 이루어진 단어와 소문자로 이루어진 단어들이 있는 경우, 영단어를 중심으로 앞과 뒤의 단어들 위치를 교환한다. 영단어는 최대 1개이고 없을 수도 있다.
ex)
# ### abc ##
→ ## abc # ###
아랍어와 영단어는 최대 10글자이다.
Idea
결과적으로는 단순히 영문자를 기준으로 앞과 뒤의 위치를 교환하라는 문제이다.
alpha라는 변수를 이용하여 테스트케이스에 영단어가 있을 경우 해당 인덱스를 표시하고, 없다면 -1로 표시한다.
이 alpha를 for문과 적절히 활용하여 원하는 문장을 출력할 수 있도록 한다.
Code
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
|
#include <stdio.h>
#include <ctype.h>
int main() {
char str[100][11];
int T, N;
scanf("%d", &T);
int i, alpha = -1;
//T개의 테스트케이스
while (T--) {
alpha = -1;//소문자가 있는 인덱스 표시
scanf("%d", &N);
for (i = 0; i < N; i++) {
scanf("%s", str[i]);
//소문자라면 해당 인덱스 위치를 저장
if (isalpha(str[i][0])) alpha = i;
}
//소문자가 없을 때,
if (alpha == -1) {
for (i = 0; i < N; i++) printf("%s ", str[i]);
printf("\n");
}
else {//소문자가 존재할 때,
for (i = alpha + 1; i < N; i++)
printf("%s ", str[i]);
printf("%s ", str[alpha]);
for (i = 0; i < alpha; i++)
printf("%s ", str[i]);
printf("\n");
}
}
return 0;
}
|
cs |
line 18 : 소문자의 유무 판단
line 21 ~ 24 : 소문자가 존재하지 않을 경우
line 25 ~ 32 : 소문자가 존재할 경우
*최대 10글자여서 처음엔 생각없이 str[100][10]이라고 했다가 알고리즘은 맞는데 계속 틀려서 str[100][11]로 바꾸었더니 맞았습니다. 문자열의 마지막 부분엔 꼭 '\0'이 들어가야 한다는 사실을 잊지 마세요...
'백준 Baekjoon' 카테고리의 다른 글
[C언어] 백준 6378 : 디지털 루트 (0) | 2020.07.21 |
---|---|
[C언어] 백준 4659 : 비밀번호 발음하기 (0) | 2020.07.21 |
[C언어] 백준 1003 : 피보나치 함수 (0) | 2020.07.20 |
[JAVA] 백준 2748 : 피보나치 수 2 (0) | 2020.07.20 |
[C언어] 백준 2292 : 벌집 (0) | 2020.07.20 |