Skip to content

Conversation

@oncsr
Copy link
Contributor

@oncsr oncsr commented Mar 11, 2025

🧷 문제 링크

https://www.acmicpc.net/problem/5000

🧭 풀이 시간

27분

👀 체감 난이도

✏️ 문제 설명

수열 A를 수열 B로 만들려고 한다.
사용할 수 있는 연산은, 어떤 연속된 세 원소 a, b, c를 골라, 순서를 c, a, b로 바꾼다.

연산을 이용해서 A를 B로 만들 수 있는지 알아보자.

🔍 풀이 방법

[사용한 알고리즘]

  • 세그먼트 트리

A를 B로 만들건데, B의 첫 수부터 맞춰주는 방식으로 접근했다.
B의 첫 수 B[1]에 대해, A에서의 B[1]의 위치가 홀수 번째라면, A에서 B[1]만 골라내서 그대로 맨 앞으로 가져올 수 있다.
(연산을 반복 적용하면 됨.)

그렇게 수가 두 개 남을때까지 위 과정을 반복한다.

이 때, A에서의 B[i]의 위치를 구하기 위해 세그먼트 트리를 사용해서, 이미 처리한 수들을 중복해서 세지 않도록 구현했다.

⏳ 회고

어렵다 매우

@ShinHeeEul ShinHeeEul merged commit dd7b0d7 into main Mar 11, 2025
1 check passed
@oncsr oncsr added the success 👍 해설을 보지 않고 풀었을 때 label Mar 11, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

success 👍 해설을 보지 않고 풀었을 때

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants