[BOJ21315] 카드 섞기

Updated:

문제

  • 카드가 1 ~ N 순서대로 쌓여있음
  • (2, k) 섞기 -> k + 1단계로 이루어짐. 밑에서 2^k개를 맨 위로 올리기
  • 2번 (2, k) 섞기 후의 카드 더미 결과가 주어졌을 때, k 알아내기

입력

  • N
  • 2번의 (2, k) 섞기 후의 카드 더미가 위에 있는 카드부터 공백으로 구분하여 주어짐

출력

  • 첫 번째 k와 두 번째 k를 출력

설계

  • 2중 포문을 이용하여 k 두 개 구하기
  • mix 함수 구현 - 뒤에서 2^k개를 앞으로 보내는 재귀함수

피드백

  • 처음 구현했을 때, 1자리의 수만 생각하여 접근
    • 간단하게 string, substr 이용하여 풀이하여 틀림
  • N은 1000이하의 수이기 때문에, 수를 담을 컨테이너가 따로 필요
  • 2^n이 필요할 때는 pow 대신 (1 « n 이용)

How I solved(click to github)


ref :
BOJ21315

Leave a comment