본문 바로가기
알고리즘/koreatech

1119: 제스쳐 컨트롤 II

by cjw.git 2020. 12. 16.

Link : judge.koreatech.ac.kr/problem.php?id=1119


1. 문제

  • 입사 10년차를 맞아 열심히 모은 돈으로 드디어 꿈에 그리던 BMW 자동차를 구입한 광성이.
    그 중에서도 가장 마음에 드는 기능은 바로 핸들 제스쳐 컨트롤!
    문자열이 원 형태로 배열되어 화면에 보이고, 왼쪽으로 손을 휙 움직이면 왼쪽으로 한 칸 쉬프트가 되고, 오른쪽으로 손을 휙 움직이면 오른쪽으로 한 칸 쉬프트가 된다.
    예를 들어 문자열이 ABCDE 라면, 왼쪽으로 휙 움직일 경우 BCDEA, 오른쪽으로 휙 움직일 경우 EABCD 가 화면에 보이게 된다.
    신기한 광성이는 이 기능을 직접 구현해보기로 한다.
    입력 문자열과 방향(L: 왼쪽, R: 오른쪽)의 시퀀스가 주어졌을 때 최종적으로 화면에 보이는 문자열을 출력하는 프로그램을 작성하시오.

 


2. 문제의 조건

  • 1 <= T <= 100 (테스트케이스)
  • 1 <= S <= 100,000 (문자열길이)
  • 1 <= D <= 100,000 (명령 개수)

 


더보기

3. 문제 접근

  • 시간 복잡도

    1초 시간 내, 테케 100개에 명령개수가 10만개이므로 O(N^1.14) 시간 이내에 해결해야합니다.

 

  • 아이디어

    abcde LRL 기준으로
    (L)
    bcdea

    a b c d e
    (R)
    abcde
    a b c d e
    (L)
    abcde
    a b c d e
    L이면 위치가 오른쪽으로, R이면 위치가 왼쪽으로 움직이는 것을 볼 수 있습니다.

    이 기준으로 작성하시면 됩니다.

 


4. 풀이 방법

  • pos를 0으로 지정
  • 모든 명령줄을 반복하면서
    L이면 pos를 1증가
    R이면 pos를 1감소 합니다.
  • 마지막으로 pos부터 문자열의 길이까지 Mod 연산자를 이용하여 출력합니다

    ※ pos가 3부터 시작 할 경우 cdeab
                                         34501
    순으로 출력이 되어야하기 때문에 Mod연산자를 이용하여 출력해야합니다.

 


5. 소스코드


 

cjw.git@gmail.com

'알고리즘 > koreatech' 카테고리의 다른 글

1172: 킹콩 영준이와 종욱이의 대도시 파괴 프로젝트  (0) 2020.12.16
1125: 좌우로 밀착 I  (0) 2020.12.16
1116: 짝궁 문자열  (0) 2020.12.15
1110: 징검다리  (0) 2020.12.15
1109: 자라나라 나무나무  (0) 2020.12.14

댓글