반응형
https://www.acmicpc.net/problem/4335
값이 나올 수 없는 위치를 체크해두고, "right on"일 때의 숫자가 나올 수 없는 위치라면 거짓말을 한 것입니다.
괜히 라인 수 줄여보다가 이상하게? 많은 걸 배울 수 있었습니다.
1. scanf에서 "%*s" 이런 식으로 하면, 해당하는 부분은 입력을 무시하고 넘어갈 수가 있었습니다.
2. scanf에서 int형에 %c로 받으려고 할때, 그 변수가 음수라면 입력값의 오류가 있었습니다. 그런데 0 이상의 수는 올바르게 입력이 됩니다.
예를 들어, int a = - 1; scanf("%c", &a);는 입력이 제대로 안되지만, int a = 0;으로 초기화하고 입력받으면, 정상적으로 입력이 받아집니다. 원래 이렇게 하면 안되겠지만, character형의 범위에 영향을 받는건지 원인은 잘 모르겠습니다.
3. bool은 따로 초기화 안해줘도 false로 초기화가 됩니다.
#include <cstdio>
int a, i;
bool v[10];
int main() {
while (1) {
scanf("%d", &a); if (!a--) break;
scanf("%*s %c%*s", &++i);
if (i == 'h') for (i = a; i < 10; i++) v[i] = 1;
else if (i == 'l') for (i = a; i >= 0; i--) v[i] = 1;
else {
printf("Stan %shonest\n", v[a] ? "is dis" : "may be ");
for (i = 0; i < 10; i++)v[i] = 0;
}
}
}
3등을 할 수 있었습니다~.
윗 분들 코드보다 메모리 더 적게 쓰는거 같은데, 더 높게 뜹니다. 제가 잘 모르는건지 기준이 다른건지 모르겠습니다.
반응형
'Algorithm' 카테고리의 다른 글
백준 12851 : 숨바꼭질 2 (0) | 2021.11.12 |
---|---|
백준 9019 : DSLR (0) | 2021.11.12 |
백준 15644 : 구슬 탈출 3 (0) | 2021.11.12 |
백준 13460 : 구슬 탈출 2 (0) | 2021.11.12 |
백준 2143 : 두 배열의 합 (0) | 2021.11.12 |