728x90
https://www.acmicpc.net/problem/1439
그리디 문제이다. 문자열이 주어졌을때 뒤집어서 같은 숫자를 만들어야한다.
뒤집는 횟수를 구하기 위해 값이 바뀔때마다 하나씩 체크하고 2로 나누어주면된다. (2로 나눈 이유는 예제 입출력에서 규칙을 찾아내었다.)
#include<stdio.h>
int main() {
char s[1000000];
int cnt = 1, i;
scanf("%s", s);
for (i = 1; s[i] != '\0'; i++) {
if (s[i] != s[i - 1]) {
cnt++;
}
}
printf("%d\n", cnt / 2);
return 0;
}
위 코드는 문자열의 길이가 최대 1,000,000 이므로 그만큼 자리를 차지해야한다. 이를 해결하기 위해 char 하나씩 가져오면서 확인하면 사이즈도 줄일수 있다.
#include<stdio.h>
int main() {
int cnt=0;
char p='\0', c;
while (1)
{
c = getchar();
if (c == '\0' || c == '\n') {
break;
}
if (p != c)
cnt++;
p = c;
}
printf("%d\n", cnt / 2);
return 0;
}
오늘은 오전 오후 모두 코테가 있어서 쉬운 문제로 하나푼다.
'STUDY > Algorithm' 카테고리의 다른 글
[백준] 14890 경사로 python (0) | 2022.03.15 |
---|---|
[백준] 20551 Sort마스터 배지훈의 후계자 python (0) | 2022.03.13 |
[백준] 1865 웜홀 python (0) | 2022.03.11 |
[백준] 11657 타임머신 python (0) | 2022.03.11 |
[백준] 16235 나무 재테크 python(pypy) (0) | 2022.03.10 |