https://www.acmicpc.net/problem/1436
1436번: 영화감독 숌
666은 종말을 나타내는 수라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워
www.acmicpc.net
문제 정리
1번째 영화 - 666, 2번째 영화 - 1666, 3번째 영화 - 2666 ... 이런식으로 n번째 영화의 666을 찾아라!
생각
근데 이해하는데 좀 시간이 걸렸는데 이렇게 생각하면 된다
666이 들어간 모든 숫자중에서 작은 순으로 배열이나 벡터를 만들어서 그것의 n번째 인덱스 찾기!
즉
666 1666 2666... 10666 이게 아니라 6661이 그 사이에 있다는 소리!
숫자를 하나씩 늘려가면서 666이 있을 때 체크하면 될 듯
코드
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
int n, count = 665;
vector<int> v;
cin >> n;
while(v.size()<n){
count++;
string numStr = to_string(count);
// 현재 수를 문자열로 변환!
if(numStr.find("666") != string::npos){
v.push_back(count);
}
}
cout<<v.back();
}
이건 누가봐도 벡터가 편할 것 같은 문제라 벡터를 썼다!!! 개편함 굿
중요한 부분은
if(numStr.find("666") != string::npos){
이 부분인데 string내장함수인 find를 사용해 666을 찾는다는 소린데 find함수의 npos를 사용하면 편하다.
find
string에서 단어를 찾을 떄 find와 npos를 사용한다
- 문자열 앞에서부터 검색, 검색 문자열이 시작되는 위치 반환
- 검색 문자열이 없으면 string::npos(4294967295) 반환
여기서 npos는 -1 값을 가지는 상수!!!
단어 존재 여부 확인 참고 글
https://jie0025.tistory.com/169
[C++] string::find, string::npos 단어 존재 여부 확인
string 형의 데이터에서 어떤 단어가 존재하는지 찾을 떄 find와 npos를 사용한다. find 문자열 앞에서부터 검색, 검색 문자열이 시작되는 위치 반환 검색 문자열이 없으면 string::npos(4294967295) 반환. #in
jie0025.tistory.com
'백준' 카테고리의 다른 글
백준 1240 C++ (0) | 2024.03.03 |
---|---|
백준 20300 C++ (0) | 2024.02.25 |
백준 14889 C++ (1) | 2024.02.20 |
백준 15686 C++ (0) | 2024.02.18 |
백준 3085 C++ (0) | 2024.02.17 |