인프런 커뮤니티 질문&답변

jjune0427님의 프로필 이미지
jjune0427

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

5-J

5-J 질문입니다.

작성

·

103

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;
}

 

감사합니다.

jjune0427님의 프로필 이미지
jjune0427
질문자

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

jjune0427님의 프로필 이미지
jjune0427

작성한 질문수

질문하기