반응형

https://www.acmicpc.net/problem/4335

 

4335번: 숫자 맞추기

스탠과 올리는 정수 맞추기 게임을 하고 있다. 스탠은 1과 10사이의 정수 하나를 생각하고, 올리는 스탠이 생각한 수를 맞춰야 한다. 올리가 수를 말할 때마다 스탠은 올리가 말한 수가 큰지, 작

www.acmicpc.net

 

값이 나올 수 없는 위치를 체크해두고, "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등 이미지

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

+ Recent posts