#include <iostream>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int num = 0; // 찾으려는 값
int movie_num = 665;
int count = 0; // 찾으려는 값과 일치하는지 비교하려는 count 상승값
cin >> num;
while(movie_num++){
string s = to_string(movie_num);
if(s.find("666")!=-1)
count ++;
if(count == num){
cout << movie_num << "\n";
break;
}
}
return 0;
}
처음 문제를 풀기 전, 20분 정도 고민을 해보았다.
10분정도 무식하게 배열로 짜보았는데, 답은 얼추 맞은 것 같았으나 결과를 내기까지 시간이 오래걸렸다.
코드가 다소 지저분한 느낌이 없잖아 있었다.
더 깔끔하게 문제를 풀 수 있는 방법이 없을까 싶었고, 문득 문자열을 활용하는 방식이 떠올랐다.
다시 고민해서 공식을 세웠으며, 새로 짜낸 식은 다음과 같았다.
1. 숫자 변수의 시작을 666부터 시작한다. 해당 숫자는 문자열로 바꾼다. (문자열에서 find함수를 사용하기 위함이다.)
2. count = 0이다. 만약 해당 문자열에서 666이 발견되면, 0을 증가시킨다.
3. 계속해서 count를 증가시키다가 입력 받았던 찾으려는 값 'num'과 같으면 해당 문자열의 값을 출력한다.
참고로 find함수는, 해당 문자열에서 원하는 문자가 존재 할 경우 해당 문자열의 '단어' 위치를,
존재하지 않을 경우 -1을 출력한다.
https://astrid-dm.tistory.com/20?category=840668
Brute Force라는 이름 값 대로 단순 무식하게 풀어보려다가
간만에 조금 색다른 방식으로 문제를 풀려고 도전하니 재밋었다.
'🖥️ CS > Baekjoon Algorithms' 카테고리의 다른 글
#2108번 통계학 (c++) (0) | 2020.03.08 |
---|---|
#2550번 수 정렬하기 (c++) (0) | 2020.03.03 |
#1018번 체스판 다시 칠하기 (c++) (0) | 2020.03.01 |
#1568번 덩치 (c++) (0) | 2020.03.01 |
#2231번 분해합 (c++) (0) | 2020.03.01 |