본문 바로가기
C | C++/Softeer 문제풀이

Softeer [21년 재직자 대회 예선] 비밀 메뉴 C/C++ 문제풀이 (level 2)

by zyeon 2023. 8. 3.

https://softeer.ai/practice/info.do?idx=1&eid=623 

 

Softeer

연습문제를 담을 Set을 선택해주세요. 취소 확인

softeer.ai

 

 

<cpp 문제풀이>

#include<iostream>
#include<vector>

using namespace std;

int main(int argc, char** argv)
{

	int m, n, k;
	vector<int>v1;
	vector<int>v2;
	int count = 0;
	int temp;
	int flag;
	
	cin >> m >> n >> k;
    temp = m;
    
	for (int i = 0; i < m; i++) {
		int num;
		cin >> num;
		v1.push_back(num);
	}
	
	for (int i = 0; i < n; i++) {
		int num;
		cin >> num;
		v2.push_back(num);
	}

	for (int i = 0; i < n; i++) {

		if (v2[i] == v1[m - temp]) {
			if(count==0) flag=i;
			count++;
			temp--;
		}
		else {
			if(count!=0) i=flag;
			temp = m;
			count = 0;
		}

		if (count == m)
			break;
	}

	if (count == m) cout << "secret";
	else cout << "normal";

	return 0;
}

 

2중 for문을 사용하지 않기위해 count를 사용해 count가 m과 같다면 secret 출력으로 하였습니다.

 

처음에는 flag를 사용하지 않아 

레시피가 1234이고 버튼 입력이 11234일경우와 같은 테스트 케이스에서 실패했어요 ...

그래서 flag를 추가하여 앞으로 다시 돌아가서 놓친부분을 비교하는 방식으로 해결했습니다.

 


다른 의견이나 질문 언제나 환영입니다!!

댓글