🖥️ CS/Baekjoon Algorithms

#1436번 영화감독 숌 (c++)

한국의 메타몽 2020. 3. 3. 01:35
#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 

 

Find()와 Substr()

백준 2941번 '크로아티아 알파벳' 문제를 풀며 떠올린 메소드 들이다. https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 문제 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따..

astrid-dm.tistory.com

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