728x90
문제
https://www.acmicpc.net/problem/1436
완전탐색 문제다.
코드
using System;
using System.Text;
using System.Collections.Generic;
namespace donsik
{
class Algorithm
{
static void Main(string[] str)
{
int input = int.Parse(Console.ReadLine());
int startNum = 665;
int cnt = 0;
while(true)
{
startNum++;
if(startNum.ToString().Contains("666"))
{
cnt++;
}
if(cnt == input)
{
break;
}
}
Console.Write(startNum);
}
}
}
고민
처음엔 문제 이해를 못했는데, 완전탐색으로 풀어볼까 싶어서 냅다 1씩 더했는데 됐다.
왜 66666이 나오는지 몰랐는데 생각해보니 16661이런 것도 있으니까..
처음엔 1666, 2666, ... 16660, 16661, 16662 ... 16666 ... 6666 이렇게 다양한 666을 포함한 수가 있었다.
진짜 어려운 문제라고 생각해서 엄청 고민하고 어떻게 16661과 16666의 크기를 비교하고.. 언제 다 경우의수를 다 따지고 있을까 생각했다. 일치하는 수의 경우의수를 따지지말고 그냥 모든 수를 돌면서 666이 포함되면 연산하는 문제!!
if문에 if문을 썼더니 시간초과가 떴는데, cnt == input을 밖으로 빼서 성공할 수 있었다.
'동식이 취업시키기 작전 > 코딩테스트' 카테고리의 다른 글
[백준] 1920 수 찾기(C#) (0) | 2024.01.31 |
---|---|
[백준] 2309번 일곱 난쟁이 (1) | 2024.01.30 |
[백준] 1018 체스판 다시 칠하기(C#) (1) | 2024.01.29 |
[백준] 7568 덩치(C#) (1) | 2024.01.29 |
[백준] 1224 스위치 켜고 끄기(C#) (0) | 2024.01.29 |