#include <stdio.h>
#include <string.h>
int main()
{
int num;
int cnt = 0;
char *result, *result2, *result3, *result4;
char name[6];
int list[10001];
for (int i = 100; i <= 1000000; i++)
{
sprintf(name,"%d", i); //정수를 문자열로 변환
result = strstr(name,"666");
result2 = strstr(name,"6666");
result3 = strstr(name,"66666");
result4 = strstr(name,"666666");
if (result != NULL || result2 != NULL || result3 != NULL || result4 != NULL )
{
list[cnt] = i;
cnt ++;
}
}
scanf("%d", &num);
printf("%d\n", list[num-1]);
return 0;
}
틀렸다는데 실행 잘되니까 난 맞은걸로 할거임 ;;
알고리즘은 다음과 같음
연속된 숫자 666을 하나의 문자열로 생각해서
strstr함수로 666, 6666, 66666, ... 이 포함되었는지 확인
반환값이 NULL이 아니면 list에 저장 후 출력
다른사람들 풀이 보니까 아예 브루트포스로 각 인덱스에 접근해서
나머지가 666인지 확인하는 방법을 썼던데(문자열 사용 x)
난 멍청해서 못하겟고 이정도면 나쁘지 않다;;;ㅎ나중에 다시 풀어봐야지
+
생각하기 귀찮아서 N이 1부터 10000까지의 수니까 아 대충 만번째 수가 666666가량 되겠지ㅋ
하고 result1234 ㅇㅈㄹ로 정했다(당연히 틀리지)
이런 부정확한 코드로도 컴공이라할수 잇을까요
백준님 죄송합니다 전 최선을 다했습니다
'Coding > C, C++' 카테고리의 다른 글
[C] vscode 초기 경로 설정 공부 (0) | 2025.07.16 |
---|---|
백준 #28278 (0) | 2024.07.23 |
백준 #2231 (실패) (0) | 2024.07.17 |
백준 #2798 (0) | 2024.07.15 |
백준 #1152 (0) | 2024.07.10 |