문제
6이 3개이상 '연속'으로 들어간 숫자를 찾는것이 문제입니다.
n을 입력받고 n번째 해당 숫자를 출력해주면 됩니다.
풀이
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int count = 0;
int number = 0; //영화제목숫자
while (count != n)
{
number++;
int temp = number;
while (temp >=666)
{
if (temp % 1000 == 666)
{
count++;
break;
}
temp = temp / 10;
}
}
cout << number;
}
위 코드에서 3개 연속의 6이 있나 확인하는 부분은
while (temp >= 666)
{
if (temp % 1000 == 666)
{
count++;
break;
}
temp = temp / 10;
}
이 부분입니다.
temp가 0이 아닐때까지 while문을 도는데,
먼저 temp%1000 === 666인지 확인합니다.
:일의 자리, 십의 자리, 백의 자리 ==>이렇게 3개가 666인지 확인하는 것입니다.
만약에 맞다면, count를 증가시키고 while문을 탈출합니다.
만약에 아니라면, temp=temp/10을 통해서 일의 자리 숫자를 삭제하고 다시 재검사합니다.
그렇게 계속 검사를 하다가 temp가 666보다 작게되면 절대 6이 연속3개가 나올 수 없기 때문에,
while문을 탈출합니다.
그렇게 count가 입력받은 n이 될때까지 계속 숫자를 늘려가며 검사하고 출력해줍니다.
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
백준-커트라인(25305번) (0) | 2022.08.15 |
---|---|
백준-수 정렬하기(2750번) (0) | 2022.08.15 |
백준-체스판 다시 칠하기(1018번) (0) | 2022.08.12 |
백준-덩치(7568번) (0) | 2022.08.11 |
백준-분해합(2231번) (0) | 2022.08.07 |