인프런 커뮤니티 질문&답변
5-J 질문입니다.
작성
·
169
0
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 
- 먼저 유사한 질문이 있었는지 검색해보세요. 
- 서로 예의를 지키며 존중하는 문화를 만들어가요. 
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
http://boj.kr/604e8201aae24300845cde414a1f4416
http://boj.kr/604e8201aae24300845cde414a1f4416
선생님 강의보고 생각하면서 유사하게 만들어봤는데 틑렸다고 나옵니다 ㅠㅠ 정답 코드랑 비교해도 어떤 부분이 틀렸는지 확인이 안되서 ㅠㅠ 질문 남깁니다. 감사합니다.
답변 1
0
큰돌
지식공유자
안녕하세요 jjune님 ㅎㅎ
		visited[arr[i]] = 1;
		v.push_back(arr[i]);
		}
	}이게 이렇게 넣어져야 하지 않을까요?
그리고.. back_index의 초기값은 -1이여야 합니다.
			if (v.size() == n){
				int back_index = -1, pos;
수정된 전체 코드
#include <bits/stdc++.h>
using namespace std;
int n, k, result = 0;
int visited[105], arr[105];
vector<int> v;
int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	cin >> n >> k;
	for (int i = 0; i < k; i++) {
		cin >> arr[i];
	}
	for (int i = 0; i < k; i++) {
		if (!visited[arr[i]]) {
			if (v.size() == n){
				int back_index = -1, pos;
				for (int a : v) {
					int find_index = 987654321;
					for (int j = i + 1; j < k; j++) {
						if (a == arr[j]) {
							find_index = j;
							break;
						}
					}
					if (back_index < find_index) {
						back_index = find_index;
						pos = a;
					}
				}
				visited[pos] = 0;
				v.erase(find(v.begin(), v.end(), pos));
				result++;
			} 
		visited[arr[i]] = 1;
		v.push_back(arr[i]);
		}
	}
	cout << result;
}
감사합니다.






으억... visited가 거기있었다니... ㅠㅠㅠㅠㅠ {}가 많아서 헷갈린거 같습니다 ㅠㅠ