알고리즘/programmers

[Programmers] 110 옮기기

꾸준함. 2021. 10. 8. 18:50

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/77886

 

코딩테스트 연습 - 110 옮기기

0과 1로 이루어진 어떤 문자열 x에 대해서, 당신은 다음과 같은 행동을 통해 x를 최대한 사전 순으로 앞에 오도록 만들고자 합니다. x에 있는 "110"을 뽑아서, 임의의 위치에 다시 삽입합니다. 예를

programmers.co.kr

시간제한이 10초인 것 같습니다.

 

알고리즘은 아래와 같습니다.

1. 110은 1로 시작하기 때문에 문자열 내 마지막 0 뒤로 옮기는 것이 사전 순으로 앞에 오게 만드는 방법입니다.

2. 우선 110들을 주어진 문자열에서 제거하고 몇 개를 제거했는지 카운팅 합니다.

3. 남은 문자열 내 마지막 0 위치를 찾습니다.

3.1 마지막 0이 존재하면 2번에서 제거한 110들을 0 뒤로 이동시킵니다.

3.2 마지막 0이 존재하지 않는다면 문자열이 전부 1로 이루어졌다는 뜻이므로 110을 문자열의 앞에 이동시킵니다.

4. 벡터 내 모든 문자열에 대해 3번을 적용하고 answer 벡터를 반환합니다.

 

 

개발환경:Visual Studio 2017

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형