2022 중앙대학교 CHAC 풀이
A   [BOJ 24389] 2의 보수
B   [BOJ 24393] 조커 찾기
C   [BOJ 24392] 영재의 징검다리
D   [BOJ 24390] 또 전자레인지야?
E   [BOJ 24395] 명진이의 신년계획

1. 문제

$24393$. 조커 찾기 (2022 중앙대학교 CHAC Open Contest B번)

백준 24393번 - 조커 찾기 (https://www.acmicpc.net/problem/24393)

2. 풀이

한 줄에 몇 개의 숫자 입력을 받을 것인지 불분명하기 때문에 한 줄의 문자열로 받아서 공백을 기준으로 분리하는 작업이 필요하다. 따라서 따로 Split 함수를 만들어 사용하였다.

단순 구현 문제이나, indexing 작업이 약간 까다로운 문제이다. 조커를 제외한 나머지 무슨 카드가 어떤 위치에 있는지에 대한 정보는 필요 없기 때문에, 조커의 위치만 pos 변수에 담는다.

  1. $13/14$장으로 나누었을 때, 조커가 왼쪽으로 가는지 오른쪽으로 가는지 확인 오른쪽으로 간다면 $(조커 위치) = (조커 위치) - 13$
  2. 짝수 번째$(j\%2==0)$ 작업은 A[i][j]만큼 오른쪽에서 가져오는 작업 홀수 번째$(j\%2==1)$ 작업은 A[i][j]만큼 왼쪽에서 가져오는 작업
  3. 조커가 왼쪽 더미에 있는 경우를 분석
    • Next: 다음 조커 위치 (현재 줄의 모든 작업을 수행한 후의 조커 위치)
    • Left_sum: 왼쪽 더미에서 지금까지 총 몇 장을 가져왔는지 (A[i][j]만큼 가져올 때, 그 묶음에 조커가 포함되었는지 여부를 알기 위함)
    • 오른쪽에서 가져올 경우, nextA[i][j]를 더한다. (가져오는 만큼 그대로 조커의 최종 위치가 증가)
    • 왼쪽에서 조커가 포함된 묶음을 가져오는 경우, 해당 묶음을 기준으로 조커가 몇 번째에 있는지를 알아내서 더한다. (왼쪽 더미에서의 원래 조커 위치 - 현재까지 왼쪽 더미에서 가져온 카드 개수)
    • 왼쪽에서 조커가 포함되지 않은 묶음을 가져오는 경우, nextA[i][j]를 더하고, left_sum에도 A[i][j]를 더한다.
  4. 조커가 오른쪽 더미에 있는 경우는 $3$의 기준을 반대로 잡고 생각한다.

3. 채점 결과

boj-24393

4. 회고

.

5. 코드

댓글남기기