수열정렬

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

풀이

  • 어려웠음

  • i 번째 값과

  • j 번쨰 (0번째 ~ i-1번째) 값을 비교하여

  • 큰 값의 index (i or j) 에 해당하는 위치의 배열 값을 ++

  • 쉽게 생각해서,

  • a배열의 값들이 동일선상에 위치하는데,

  • 비내림차순으로 정렬하기 위해 몇 번씩 뒤로 이동시켜야 하는지 카운트

  • ex)

      B[p[0]] = A[0] = 7 <-
    

    ​ B[p[1]] = A[1] = 4 <-
    ​ B[p[2]] = A[2] = 2 <-
    ​ B[p[3]] = A[3] = 3 <- 기준
    ​ B[p[4]] = A[4] = 9
    ​ B[p[5]] = A[5] = 10

      3을 기준으로 7, 4, 2 와 비교
      
      3과 7 => 7이 더 크다 => 7은 한 번뒤로 가야함 => B의 index 값 증가
      3과 4 => 4가 더 큼 => 4는 한 번뒤로 가야함 => B의 index 값 증가
      3과 2 => 3이 더 큼 => 3은 한 번뒤로 가야함 => B의 index 값 증가
    
Read more

인접한 비트의 개수

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

풀이

  • 어렵다

  • d[i][j][m]

      길이가 i인 수열, 
    

    ​ 인접 비트 개수가 j,
    ​ 마지막 비트가 m인 ( m : 0 or 1 )
    ​ 수열의 경우의 수

  • 마지막 비트가 0

    • 이전 비트가 0 : 경우의 수에 영향 X
    • 이전 비트가 1 : 경우의 수에 영향 X
  • 마지막 비트가 1

    • 이전 비트가 0 : 경우의 수에 영향 X
    • 이전 비트가 1 : 경우의 수에 영향 O
Read more